解决思路是针对产生跨域安全问题的三点原因进行一一攻破即可。
![](https://box.kancloud.cn/f4fc2b14ed76a3fce76a80946f04aced_1452x912.jpeg)
首先第一点 “浏览器的限制”
那么只要禁止掉浏览器的限制就OK。启动浏览器时通过给其指定参数可以禁止掉跨域限制的功能,但是其实这样做意义不大,因为不可能给每个使用你系统的用户电脑上的浏览器去加这个参数吧。。。。
其次第二点 “请求是XHR类型”
那么只要发送的请求不是XHR的就行。于是出现了大名鼎鼎的 **JSONP**。
最后第三点 “跨域”
JSONP虽然能够解决问题,但是它存在很多弊端,导致现在JSONP使用的越来越少了。所以我们决绝跨域安全问题的重点就落在了第三点上-即解决 “跨域”。
解决跨域有两种思路:
1. 在后端解决(支持跨域):后端在响应头里面加入一些允许浏览器跨域的信息,用来告诉浏览器:“我允许XXX客户端访问我,你就不要做跨域安全的检查了”。
2. 在前端解决(隐藏跨域):通过代理来解决。比如之前A访问C存在跨域,现在可以加一个B服务器,让A先访问B,B再去访问C,A和B是同域名的。
总结:
1. jsonp
2. nginx 反向代理(nginx 服务内部配置 Access-Control-Allow-Origin *)
3. CORS 前后端协作设置请求头部,Access-Control-Allow-Origin 等头部信息
4. iframe 嵌套通讯,postmessage