当我向我的网站发送 POST 获取请求以登录时,它在 iOS 上一切正常。获取响应 set-cookie 包含我继续和发出 future 请求所需的所有 cookie。问题出在 Android 上,我在 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=Thu, 07-Nov-2019 09:27:20 GMT; domain=.MYURL; path=/",
完美的回应。一切正常。
这是来自 android 的响应:
"set-cookie": "clientID=123; expires=Thu, 07-Nov-2019 09:34:00 GMT; domain=.MYURL; path=/",
我已经尝试了几天来理解这个问题,但无济于事。我尝试在没有 httponly 的情况下测试 cookie 以查看是否是错误但不是。
我希望一些有经验的 react-native 用户能够指出这个问题。我以前在为 android 和 IOS 创建 native 应用程序时没有体验过。仅与 native react 。 :-(
我希望能够让它发挥作用,因为我宁愿避免为这个小部分使用 native 代码。
编辑:使用 reddit 登录 api 测试了获取功能,同样的问题发生了。在 Android 上只有 1 个 cookie 响应 set-cookie,但在 iOS 上显示所有 cookie。
最佳答案
查看React Native和MDN的官方文档:
- https://facebook.github.io/react-native/docs/network
- https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
这里的问题是 fetch
默认情况下不会从服务器发送或接收任何 cookie。所以你必须通过添加 credentials
来启用它。还有一些库可以帮助您管理 cookie:
关于android - 在 Android 上的获取响应中只收到一个 cookie,但在 iOS 上不接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186826/