参考链接:www.cnblogs.com/laixiangran…
1.为什么要有跨域限制
因为存在浏览器同源策略,所以才会有跨域问题。跨域限制主要的目的就是为了用户的上网安全。
2. 为什么会产生跨域
所谓同源是指:协议、域名、端口相同。 同源策略:
同源策略是一种约定,是浏览器最核心也最基本的安全功能,主要体现在同源策略会限制来自不同源的文档和脚本对当前源的文档数据的读取或设置某些属性,是用于隔离潜在恶意文件的重要安全机制。

3. 同源策略又分为以下两种:
- DOM 同源策略:禁止对不同源页面 DOM 进行操作。这里主要场景是 iframe 跨域的情况,不同域名的 iframe 是限制互相访问的。
- XMLHttpRequest 同源策略:禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。
4. 解决跨域的方式
- CORS跨域:后端设置CORS来解决跨域(ie10以下不兼容)
- JSONP 跨域: 由于 script 标签不受浏览器同源策略的影响,允许跨域引用资源。因此可以通过动态创建 script 标签,然后利用 src 属性进行跨域,这也就是 JSONP 跨域的基本原理。(只支持get请求)
- postMessage 跨域:window.postMessage(message,targetOrigin) 方法是 HTML5 新引进的特性,可以使用它来向其它的 window 对象发送消息,无论这个 window 对象是属于同源或不同源。这个应该就是以后解决 dom 跨域通用方法了。