android - 在 Android 上的获取响应中只收到一个 cookie,但在 iOS 上不接收

标签 android react-native cookies fetch expo

当我向我的网站发送 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的官方文档:

  1. https://facebook.github.io/react-native/docs/network
  2. 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/

相关文章:

react-native - 即使在应用程序关闭后如何使 socket-io 工作

security - HTTPS 登录未将 JSESSIONID 保存在 cookie 中

javascript - 使用 PhantomJS 下载网页

android - ImageView 位图缩放尺寸

java - SharedPreferences.getBoolean 抛出荒谬的异常

reactjs - React Native map 选择的复选框

react-native - 如何重置底部选项卡导航器内选项卡更改的堆栈?

android - 更新 SDK 后 Cordova 模拟不在 Genymotion 上运行

java - 火力地堡 : Data not stored in the correct format

cookies - 为来自同一服务器的不同域设置 session ?