跨域

同源限制

Cookie

cookie是服务器写入浏览器的一小段信息,要求域名相同网页才可以共享。如果两个网页一级域名相同,只是次级域名不同,浏览器允许通过设置document.domain共享 Cookie

window.postMessage()

Reference:window.postMessage

  • window.postMessage()允许跨窗口通信,不论这两个窗口是否同源。
  • 通过postMessage(),读写其他窗口的 LocalStorage 也成为了可能
otherWindow.postMessage(message, targetOrigin, [transfer]);

AJAX

同源政策规定,AJAX 请求只能发给同源的网址,否则就报错。
除了架设服务器代理(浏览器请求同源服务器,再由后者请求外部服务),有三种方法规避这个限制:

  • JSONP
  • WebSocket
  • CORS
JSONP

通过script标签的src属性不受同源策略限制进行跨域访问数据,服务器会将数据放在回调函数的参数位置进行返回。

JSONP只能发送GET请求。

WebSoket

WebSocket 是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀。该协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信。

CORS

CORS 是跨源资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。

CORS主要在于后端的配置,设置允许的请求方式及请求头信息。
(例如:Access-Control-Allow-Origin: *

CORS允许任何类型的请求

Reference:王道cors-非简单请求


腊月
0 声望0 粉丝

下一篇 »
webpack4.0