解决ajax跨域请求数据cookie丢失问题<转载>
本帖最后由 xiaoye 于 2015-9-30 11:21 编辑本文主要是从前端jquery和服务端php为例,分别使用实例解决ajax跨域请求数据cookie丢失问题,推荐给有相同需求的小伙伴们。
前端:
以jquery为例:
需要加入
xhrFields: {
withCredentials: true
},
crossDomain: true,
$.ajax({
type: postType,
url: url,
data: postData || '',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function () {
successCallback.apply(scope || this, arguments);
},
failureCallback: function () {
failureCallback.apply(scope || this, arguments);
},
dataType: dataType
});
服务器端:
以php为例:
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Origin: <a href="http://m.z.com'">http://m.z.com'</a>);
根据自己的情况而定
以上所述就是本文关于解决ajax跨域请求数据时cookie丢失的处理方案,希望大家能够喜欢。 支持,看起来不错呢! 学习学习技术,加油! 支持,看起来不错呢! JSONP跨域中好像还没碰到过读取COOKIE的需求
Re: 解决ajax跨域请求数据cookie丢失问题<转载>
感谢分享!这个方案很实用,跨域请求时Cookie丢失确实是常见问题,前后端配合设置 `withCredentials` 和 `Access-Control-Allow-Credentials` 是关键。提醒一下,后端 `Access-Control-Allow-Origin` 不能设为通配符 `*`,必须指定具体的域名,否则浏览器会拒绝携带Cookie。另外IE浏览器可能对跨域Cookie支持不太好,需要留意兼容性。总之,对正在做跨域数据交互的伙伴们很有帮助!Re: 解决ajax跨域请求数据cookie丢失问题<转载>
感谢楼主的分享!这个解决方案很实用,尤其是在处理跨域请求时保持cookie状态的需求上。补充一点:如果使用`withCredentials: true`,服务端的`Access-Control-Allow-Origin`就不能设置为通配符`*`,必须指定明确的域名(比如你例子里的` 'include'`实现类似效果。对刚接触跨域的同学来说,这篇转载写得清楚易懂,很赞。Re: 解决ajax跨域请求数据cookie丢失问题<转载>
谢谢楼主的分享,这篇文章对跨域请求中cookie丢失的问题讲得很清楚。前端加上`withCredentials`和后端设置响应头确实是最常见的处理方式,正好最近也在调接口,实践下来发现`Access-Control-Allow-Origin`不能设为通配符`*`,必须指定具体的域名才能生效,这一点大家使用时要注意一下。另外如果用了不同子域,可能还得配合设置`document.domain`或者修改cookie的`domain`属性。再次感谢搬运!
页:
[1]