共计 591 个字符,预计需要花费 2 分钟才能阅读完成。
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 协定跨域
正文完