同源策略

什么是源

就是Web中内容的来源,这个源origin 是由 URL 中的 协议 主机 端口号组成

如何才是同源

协议 + 主机名 + 端口 都一样,那就是同源

哪些请求会触发

  • XHR / Fetch
  • @font-face
  • WebGL
  • drawImage()
  • CSS image

预检请求

对于会修改服务端数据,或者说会对服务端产生副作用的一些请求,浏览器会事先发起预检请求

  • 简单请求不触发 simple requests
  • 预检请求 preflighted requests
  • 带有凭证的请求 requests with credentials

方法

Cross-Origin Resource Sharing

jsonp

代理服务器

HTTP request headers

  • Origin 表示当前网站发起请求的源
  • Access-Control-Request-Method 预检请求时告诉服务器即将要发起哪些请求
  • Access-Control-Request-Headers 预检请求时告诉服务器即将要发起哪些请求头

HTTP response headers

  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Allow-Credentials
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers

相关文档

https://fetch.spec.whatwg.org/#http-cors-protocol (opens in a new tab)