当前位置: 首页 > Web前端 > JavaScript

跨域解决方案

时间:2023-03-26 23:09:30 JavaScript

如何识别跨域:JSONP利用script标签的跨域特性,在客户端定义回调函数(全局函数),请求服务端返回回调函数的调用,发送数据服务器以回调函数参数的形式传递过来,然后函数就会执行。script、img、link、iframe没有跨域请求限制码:callback的名称是固定的,后端不可更改:后端返回f('Hello'),正好这个f函数定义在前端,它会立即执行f('Hello')。最后jquery的ajax方法弹出弹窗实现JSONP前端:background:result:request:Jquery3410427...448148是jquery为我们创建的全局函数,&后面跟着一个变量_,_157...815是清除get请求的缓存。返回:结论:jquery默认帮我们发送脚本请求。Jquery默认创建全局函数。jquery默认在执行全局函数时执行成功回调。修改请求头的功能-CORS跨域资源共享使用server机制携带cookie不安全)http代理由webpack的devserver实现,适合开发阶段调试:ngnix反向代理本地8080请求ngnix代理服务器8080,同源,没有跨域限制ngnix代理服务器8080再请求真实服务器5000,因为服务器之间的通信不会受到同源策略的控制,并且相同-origin策略控制只是浏览器的一种机制。postMessagehtml页面间通信1001/MESSAGE/A.html从1002/MESSAGE/B.html请求数据:第13行,display:none是因为这个iframe只是用来发送请求,并没有显示在第17页的那一行contentWindow是iframe上的一个属性,22行,ev.data是B页面返回的数据。可以在MDN上查询postMessage的用法:17行的ev.data是从A页面接收到的数据,ev。19行的数据origin指的是页面A的链接结果:WebSocket协议跨域方式本质上不使用HTTP响应头,所以没有跨域限制Server:Client:document.domain+iframe只能实现同一个主域,不同子域下都可以操作:v.qq.com发送window.name+iframe:1001/NAME/A.html到sports.qq.com:第18行,第一次onload是页面初始化的时候,第二次是iframe.src重新赋值后:1001/NAME/proxy.html:proxy.html页面是一个空代理,只要中间代理proxy.html不设置window即可。name,A.html在B.html中仍然收到window.name:1002/NAME/B.html:result:location.hash+iframe