当我向我的网站发送POST提取请求以登录时,这一切都可以在iOS上运行。提取响应集cookie具有我继续进行并提出未来请求所需的所有cookie。问题是在Android上,即使有更多Cookie,我在set-cookie中也只收到一个cookie。好像它被剪切了,我似乎无法访问原始响应。
我的提取代码:
const myRequest = new Request('MYURL',
{method: 'POST', body: parameters,
headers: {
"Referer": 'MYURL.com/login',
'Origin': 'MYURL',
'Content-Type': 'application/x-www-form-urlencoded'
}});
fetch(myRequest)
.then(
function(response) {
try {
console.log("JSON RESPONSE: " + response.json());
console.log(JSON.stringify(response, null, 2));
console.log(response.headers.get('Content-Type'));
console.log(response.headers.get('Date'));
} catch(err) {
console.log("ERROR: " + err);
}
}
)
.catch(function(err) {
console.log('Fetch Error', err);
});
我知道android正确登录,原因是服务器将我重定向到菜单页面,并且还识别了客户端的个人ID。
这是来自iOS的响应(有效的响应):
“ set-cookie”:“ session = CENSORED; Domain = .MYURL; Path = /; HttpOnly,clientID = 123; expires =星期四,格林尼治标准时间2019年11月7日09:27:20; domain = .MYURL; path = /“,
完美的回应。一切正常。
这是android的响应:
“ set-cookie”:“ clientID = 123; expires = Thu,07-Nov-2019 09:34:00 GMT; domain = .MYURL; path = /”,
我已经尝试了几天来了解问题,但无济于事。我试图测试不带httponly的cookie,以查看是否是错误,但不是。
我希望一些经验丰富的反应型本机用户可以对这个问题有所了解。在为Android和IOS创建本机应用程序之前,我还没有经历过。仅与本机反应。 :-(
我希望能够开始使用它,因为我宁愿避免在这一小部分中使用本机代码。
编辑:使用reddit登录api测试了提取功能,并且发生了相同的问题。 Android上只有1个cookie作为响应set-cookio,而iOS上显示了所有cookie。
答案 0 :(得分:0)
查看React Native和MDN的正式文档:
这里的问题是fetch
在默认情况下不会从服务器发送或接收任何cookie。因此,您必须通过添加credentials
来启用它。还有一些库可以帮助您管理Cookie: