1.什么是跨域

跨域指的的浏览器不能执行其它网站的脚本。它是由浏览器的同源策略导致的,是浏览器对js施行的安全措施。

2.什么是同源策略

同源指的是:url的协定、域名、端口均为雷同
如果没有同源策略限度,浏览器很容易受到XSS、CSFR等攻打。
同源策略限度以下几种行为:
1.Cookie、LocalStorage 和 IndexDB 无奈读取
2.DOM和JS对象无奈取得
3.AJAX 申请不能发送

3.常见的跨域场景

以url:http://www.domain.com为比照:

url阐明是否容许
http://www.domain.com/a.js协定域名都雷同,不同文件容许
http://www.domain.com/b.js协定域名都雷同,不同文件容许
https://www.domain.com/a.js协定不雷同不容许
http://www.domain1.com/a.js子域名不雷同不容许
http://xxx.domain.com/a.js主域名不雷同不容许
http://www.domain.com:9000/a.js端口不雷同不容许

4.跨域解决方案

4.1 JSONP

4.2 跨域资源共享(CORS)

4.3 nginx代理跨域

4.4 document.domain + iframe跨域

4.5 location.hash + iframe跨域

4.6 postMessage跨域

4.7 WebSocket协定跨域