跨域是什么?为什么会出现跨域?

学思创的头像
学思创
205

       由于浏览器的同源策略限制,浏览器对javascript施加的安全限制。同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略会阻止一个域的javascript脚本和另外一个域发起请求。

      同源策略限制:

  1. 非同源网页的Cookie、LocalStorage 和 IndexedDB,无法读取
  2. 非同源网页的 DOM无法接触
  3. 非同源地址不能发送 AJAX 请求

      跨域解决方法:

  1. 通过jsonp跨域,JSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本IE),缺点是只支持get请求,不支持post请求
  2. 设置document.domain解决无法读取非同源网页的 Cookie问题(此方案仅限主域相同,子域不同的跨域应用场景)
  3. document.domain + iframe跨域
  4. location.hash + iframe
  5. window.name + iframe跨域
  6. postMessage跨域
  7. 跨域资源共享(CORS)
  8. nginx代理跨域
  9. nodejs中间件代理跨域
  10. WebSocket协议跨域

 

用户评论
评论列表