最近前端碰到请求跨域问题,同事xx和jim都提供了一个方案,蛮好用的,自己简单收集整理了下,介绍给大家。
1.cors
解决:post,get,以及cookie跨域
缺点:需要服务器端配合
参考:http://www.ituring.com.cn/article/200275
2.nginx反向代理
解决:post,get, 以及cookie跨域
优点:无需服务器端配合
参考:
(1)nginx配置
server {
listen 80;
server_name www.common.com;
root D:\project\front-end-laban; //项目根目录
location / {
proxy_set_header Host 192.168.14.215; //服务器端ip
if (!-f $request_filename) { //如果不是请求文件,访问服务器
proxy_pass http://192.168.14.215;
}
}
}
(2)修改hosts文件
127.0.0.1 www.common.com
说明:比如访问www.common.com/test.html页面,由于配置了host,会访问到本机的80端口,而80端口被nginx监听,即会被nginx拦截,nginx的配置策略是,访问文件就直接访问root目录下的文件,如果是接口之类的请求,则访问192.168.14.215服务器。这样就达到的跨域的目的。
3.jsonp
解决:get
缺点:不支持post请求
说明:jsonp就是使用了<script src=''>中src的目的地址可以跨域的特点的一项技术。它只能支持get请求就不要自明了。
参考:
http://www.cnblogs.com/yuzhongwusan/archive/2012/12/11/2812849.html
4.html5 postMessage
缺点:对浏览器版本有要求,ie8及以上才支持
参考:
http://lzw.me/a/html5-postmessage-post-cross-domain.html
5.window.name
参考:
http://lzw.me/a/html5-postmessage-post-cross-domain.html
6.anyProxy (Alibaba)
网友评论