参考:
同源策略
协议 + 域名 + 端口三者皆相同可以说是同源
同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互, 是用于隔离潜在恶意文件的重要安全机制
浏览器同源策略是为了在用户打开网站时保护网站自身的 Cookie, Storage, 和服务器等隐私数据
CORS
CORS 是目前主流的跨域解决机制, 其是一个 W3C 标准, 全称是 “跨域资源共享” (Cross-origin resource sharing). 它可以使得浏览器向跨域服务器发出 XMLHttpRequest 请求并成功接收返回数据
步骤:
-
浏览器发送 OPTIONS 请求
浏览器会先使用 OPTIONS 方法发送一个预检请求 (preflight request), 用以从服务器获取更多信息
携带这些字段:
- Access-Control-Request-Method: 表明请求的方法
- Access-Control-Request-Headers: 表明请求的 Headers
- Origin: 表明请求发出的域
-
服务端收到请求后会以
Access-Control-*response headers 的形式对客户端进行回复- Access-Control-Allow-Origin: 能够被允许发出这个请求的域名, 也可以使用 * 来表明允许所有域名
- Access-Control-Allow-Methods: 用逗号分隔的被允许的请求方法的列表
- Access-Control-Allow-Headers: 用逗号分隔的被允许的请求头部字段的列表
- Access-Control-Max-Age: 这个 preflight 能被缓存的最长时间, 在缓存时间内, 同一个请求不会再次发出 preflight 请求
从实践的角度来讲添加 CORS 支持基本上是服务端的工作
正向代理, 反向代理