同源策略和跨域

134 阅读1分钟

一、同源策略

定义
协议、端口、主机名(域名或IP)
完全一致的两个URL(俗称网址)被称为同源

用途
不同源的网页,不能共享数据/偷数据

目的
浏览器为了保证用户的数据安全

如果需要突破同源策略那么就要 —— 跨域


二、跨域

跨域的三种方式

  1. CORS
  2. JSONP
  3. 反向代理

一、CORS

简单请求

假设 a (a.com:8888) 想把 GET /data 共享给 b (b.com:7777)
在 a 的 /data 响应头设置 Access-Control-Allow-Origin: b.com:7777


复杂请求
  1. a 后端需要响应 OPTIONS 请求,细节见 MDN
  2. a.com 后端需要响应 POST 请求,细节见 MDN

复杂请求运用场景之一:比如支付交易


更多关于CORS的详细步骤在 MDN


二、JSONP (现在基本不用)

由于 <script> 标签不受同源策略约束,可以请求任意 JS 所以后端把数据直接放在 JS 里了 对回调的使用是 JSONP 的点睛之笔

和JSON没关系

缺点:只能发 get 请求


三、反向代理

反向代理就是指在服务器上的代理

一般通过 nginx 配置实现