风华正茂、时光流逝、真爱时光、努力创建辉煌。

【通信】---跨域---跨域,记住4种就可以了,其他用的时候再找,

 

跨域,记住3中就可以了,其他用的时候再找,(记住:服务器代理、cors、JSONP、 nginx代理跨域

1.JSONP

回调函数+数据就是 JSON With Padding,简单、易部署。(做法:动态插入script标签,设置其src属性指向提供JSONP服务的URL地址,查询字符串中加入 callback 指定回调函数,返回的 JSON 被包裹在回调函数中以字符串的形式被返回,需将script标签插入body底部)。缺点是只支持GET,不支持POST(原因是通过地址栏传参所以只能使用GET)

2.document.domain 跨子域

document.domain 跨子域 ( 例如a.qq.com嵌套一个b.qq.com的iframe ,如果a.qq.com设置document.domain为qq.com 。b.qq.com设置document.domain为qq.com, 那么他俩就能互相通信了,不受跨域限制了。 注意:只能跨子域)

3. iframe

window.name + iframe ==> http://www.tuicool.com/articles/viMFbqV,支持跨主域。不支持POST

4.postMessage()

HTML5的postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。适用于不同窗口iframe之间的跨域

5.CORS

CORS(Cross Origin Resource Share)对方服务端设置响应头

设置相应头:”Access-Control-Allow-Origin“

 

CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。

6.服务端代理

服务端代理 在浏览器客户端不能跨域访问,而服务器端调用HTTP接口只是使用HTTP协议,不会执行JS脚本,不需要同源策略,也就没有跨越问题。简单地说,就是浏览器不能跨域,后台服务器可以跨域。(一种是通过http-proxy-middleware插件设置后端代理;另一种是通过使用http模块发出请求)

 

posted @ 2019-08-18 18:15  野马,程序源改造新Bug  阅读(147)  评论(0)    收藏  举报