Skip to content

前端跨域原理的一些猜想

目录

什么是跨域

  • 每一个 web 服务都是一个区域,当两个 web 服务之间相互通讯时,所以产生了跨域。

为什么会存在跨域

  • 这是由于浏览器的同源策略的限制。同源策略规定了如果不是同源的服务,相互之间通讯是不允许的,因为这样可能存在安全问题。
  • 同源策略:
    • 同协议、同域名、同端口

同源策略

如何处理跨域

  • 如果不是相互通讯的话即可以不受同源策略的影响。
  • 例如:script 标签和 iframe 标签,都是属于引用外部资源,不存在跨域问题,即不受同源策略的影响。

跨域方法

JSONP
  • 通过 script 标签引用接口出传递回调函数,通过回调函数接收参数的方法接收数据
Iframe
  • document.domain
  • location.hash
  • window.name
  • postMessage
CORS
  • 设置跨域资源共享,允许所有的服务访问我的服务。即告诉浏览器不要限制别的服务访问我的服务。
  • 设置 Access-Control-Allow-Origin。
Proxy 代理
  • proxy 对象通过拦截你的请求,然后开启一个 nodejs 服务去访问你的接口,没有通过浏览器,所以也不受同源策略的影响。
WebSocket 协议
  • 该协议规定直接允许跨域通讯,即不存在跨域。

基于 MIT 许可发布