跨域解决方案

跨域问题是前端开发经常遇到的了,大家可能常用的就是JSONP了,
 
JSONP非常方便,只要前后端约定好一个方法名,就可以沟通了,但JSONP也有一定的局限,JSONP只支持GET请求,还有当你想提供一个公开服务,可以让所有外部开发者都可以调用,用JSONP就有点麻烦了
 
例如调用百度的API服务
 
var api = 'http://apis.baidu.com/heweather/weather/free?city=beijing';
$.get(api,function (data){
alert(data);
});
 
可以发现直接调用就可以正常返回,没做任何处理,也没有使用JSONP
 
这个如何实现?
 
非常简单,使用CORS(跨域资源共享)方式即可
 
实现的方式也很简单,在服务端添加一个‘Access-Control-Allow-Origin’响应头信息就可以了
 
可以允许所有跨域调用,例如 
 
Access-Control-Allow-Origin: *
 
也可以只允许某个域名的调用,例如
 
Access-Control-Allow-Origin: http://www.a.com
 
例如php中的设置:
 
header('Access-Control-Allow-Origin: *');
 
注意
 
CORS是个新东西,大部分浏览器已经支持,据说IE8也已经支持,如果对浏览器兼容性及其在意的话,建议慎用,严格测试一下
posted @ 2018-08-10 22:27  micwin  阅读(85)  评论(0编辑  收藏  举报