为了解决跨域请求的问题,我们之前采用了jsonP的方式。但是jsonp存在两个比较
严重的问题:
1 只支持GET请求。
2 所有的ajax的背后都不是异步请求,容易导致浏览器死锁。
海哥给提供了另外一种解决方案,就是CORS。
文档地址:
目前我已经修改了服务端的代码(BaseAction),请大家修改下客户端的代码。并
加以测试。
例子如下:
客户端: (json类型变量去掉,增加crossDomain: true, xhrFields结构 )
-
<script>
-
var param = {
-
type:'POST',
-
url: "",
-
data: "name=John&location=Boston",
-
xhrFields: {
-
withCredentials: true,
-
},
-
crossDomain: true,
-
success: function(ret)
-
{
-
alert(ret); //json
-
}
-
};
-
$.ajax(param);
-
</script>
服务端:
-
$http_origin = $_SERVER['HTTP_ORIGIN'];
-
header('Access-Control-Allow-Origin: '. $http_origin); // $http_origin不
-
能设置为*,为了防止跨域cookie盗用
-
header('Access-Control-Allow-Methods: POST,GET,OPTIONS');
-
header('Access-Control-Allow-Credentials: true');
-
header('Access-Control-Max-Age: 1000');
-
header('Access-Control-Allow-Headers: *')
阅读(2172) | 评论(0) | 转发(1) |