常见跨域解决办法(二)----CORS、postMessage
时间 2021-06-11
标签
后端
跨域
浏览器
安全
post
网站
url
对象
资源
文档
CORS
CORS 须要浏览器和后端同时支持。IE8和9须要经过XDomainRequest实现。
浏览器会自动进行CORS通讯,实现CORS通讯的关键是后端,只要后端实现了CORS,就实现了跨域。
实现方式
- 服务端设置Access-Control-Allow-Origin,该属性表示哪些域名能够访问资源,若是设置通配符*,则表示全部网站均可以访问资源。
postMessage
window.postMessage() 方法能够安全地实现跨源通讯,可实现跨文本档、多窗口、跨域消息传递。
使用场景
- 页面和其余打开的新窗口的数据传递
- 多窗口之间消息传递
- 页面与嵌套的iframe消息传递
otherWindow.postMessage(message, targetOrigin, [transfer]);
- message: 将要发送到其余window的数据
- targetOrigin:经过窗口的origin属性来指定哪些窗口能接收到消息,可设置为url或通配符*。发送消息时,若是目标窗口的协议、主机地址、端口号三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送,只有三者彻底匹配,消息才会被发送
- transfer:该参数可选,是一串和message 同时传递的 Transferable 对象. 这些对象的全部权将被转移给消息的接收方,而发送一方将再也不保有全部权。