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协议跨域
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net