跨域问题

浏览器的同源策略造成的:协议、域名、端口(上述三个条件不满足其一的都算跨域)

解决跨域的几种方式

  • jsonp

    • 原理:利用script标签的src属性,发送get请求不受跨域影响。缺点:只能get方式
    • <script src='https://xxx.xxx.xx?key=value&callback=xxx'><script>
      
      img的src也可以绕过同源策略,但是script可以解析js执行回调函数
      
  • iframe嵌套另一个页面

    • 二级域名相同的情况下,设置document.domain为共同那部分,在一个页面iframe引入另一个页面可以解决跨域问题
  • CORS(跨域资源共享):支持所有请求方式

    • 简单请求
    • GET, HEAD, POST,并且 Content-Type 的值仅限于下列三者之一:

      • text/plain
      • multipart/form-data
      • application/x-www-form-urlencoded
    • 预检请求,option请求,后端配置白名单
  • Nginx反向代理:服务器向服务器发起请求,不受浏览器的同源策略影响,因此利用Nginx充当代理服务器

  • node服务做中间件代理,如前端配置proxy

  • postMessage:跨窗口通信

  • window.postMessage(message, origin, [transfer])
    window.addEventListener("message", function receiveMessage(event) {}, false);
    
  • websocket:建立长连接,server 与 client 都能主动向对方发送或接收数据(全双工通信)

results matching ""

    No results matching ""