ios ajax不带cookie,ios 10.3 breaks ajax set-cookie

在iOS 10.3中,一个使用PhoneGap与Django交互的应用发现通过Ajax获取CSRF Token时,'Set-Cookie'响应头无法正常获取。在iOS 10.2及更早版本中,该代码可以成功保存CSRF Token。问题在于iOS 10.3的更新阻止了'Set-Cookie'头出现在xhr对象中,导致POST请求被禁止。开发者尝试设置xhrFields和crossDomain选项无效,寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

My phonegap app communicates with django, so I use the method described in the following article to capture and send csrftoken:

This has been working till iOS 10.3. In iOS 10.3, the ajax call gets all response headers except Set-Cookie. I tried adding xhrFields: {withCredentials: true} and crossDomain: true but it makes no difference.

Here is the request to get the csrftoken:

$.ajax({beforeSend: function(xhr) {xhr.withCredentials = true;},

type: "GET",

url: 'url',

xhrFields: {withCredentials: true},

crossDomain: true,

success: function(data, textStatus, xhr) {

// returns cookie in any iOS except the latest iOS 10.3

document.cookie = xhr.getResponseHeader("Set-Cookie");

},

});

The same code works fine in iOS 10.2 and we can save the csrftoken from "Set-Cookie" header for later use.

iOS 10.3 somehow prevents this "Set-Cookie" response header from appearing in the xhr object, thus we cannot get the csrftoken from server and any subsequent POST action will be forbidden.

Please advise, thank you!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值