同源策略
什么是源
就是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)