跨域问题

155 阅读1分钟

什么是跨域

跨域从广义上理解就是一个域下的资源去访问另一个域下的资源,比如:链接,重定向,dom标签,ajax请求等。但通常讲的跨域是指由于浏览器同源策略限制的请求场景。

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,是浏览器最核心也最基本的安全功能,可以有效避免XSS、CSFR等攻击。同源包括协议,域名,端口都相同,两个不同的域名指向同一个ip地址,也非同源。

同源策略限制会导致:

1. Cookie、LocalStorage 和 IndexDB 无法读取
2. DOM 和 Js对象无法获得
3. AJAX 请求不能发送

跨域解决方案

1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域