一、同源策略
定义
协议、端口、主机名(域名或IP)
完全一致的两个URL(俗称网址)被称为同源
用途
不同源的网页,不能共享数据/偷数据
目的
浏览器为了保证用户的数据安全
如果需要突破同源策略那么就要 ——
跨域
二、跨域
跨域的三种方式
- CORS
- JSONP
- 反向代理
一、CORS
简单请求
假设 a (a.com:8888) 想把 GET /data 共享给 b (b.com:7777)
在 a 的 /data 响应头设置 Access-Control-Allow-Origin: b.com:7777
复杂请求
- a 后端需要响应 OPTIONS 请求,细节见 MDN
- a.com 后端需要响应 POST 请求,细节见 MDN
复杂请求运用场景之一:比如支付交易
更多关于CORS的详细步骤在 MDN
二、JSONP (现在基本不用)
由于 <script> 标签不受同源策略约束,可以请求任意 JS
所以后端把数据直接放在 JS 里了
对回调的使用是 JSONP 的点睛之笔
和JSON没关系
缺点:只能发 get 请求
三、反向代理
反向代理就是指在服务器上的代理
一般通过 nginx 配置实现