【问题标题】:Ionic Cordova web app cookies not being stored on Android or iOSIonic Cordova Web 应用程序 cookie 未存储在 Android 或 iOS 上
【发布时间】:2020-01-02 07:09:55
【问题描述】:

我的公司已经构建了一个中等大小的 Ionic 应用程序,现在我们正在尝试为 Android 和 iOS 提供原生应用程序,但我遇到了持久性 cookie 的问题。

在运行应用程序 Safari 时完全没有问题,cookie 保存得很好,但是在为设备构建时,cookie 没有被保存。

现在的工作方式是当用户登录时,从服务器返回一个 cookie。在此之后,cookie 应该与每个后续请求一起发送,确保用户仍然登录。当我在登录后查看服务器的初始响应时,“set-cookie”标头就在那里。但是,之后的所有请求都不包含 cookie,因此服务器会返回未登录的响应。这仅在 iOS 或 Android 上原生运行时才会发生。

当我调试 cookie 是否被持久化时,我发现没有 cookie。

我知道 iOS 13 也有类似的问题,但我没有使用 iOS 13,我使用的是 iOS 12。我的问题同时出现在 Android 和 iOS 上。在进行 Google 搜索时,我看到的所有解决方法都是针对与我遇到的问题不同的问题,无论如何我都尝试了这些解决方法,但它们不起作用。

以前有人遇到过这个问题吗?任何关于这可能是什么以及如何解决它的想法将不胜感激,我还没有得到任何结果,而且我已经寻找答案好几天了。

同样,由于 cookie 是 HttpOnly 我无法使用 TypeScript 访问,所以我无法在不发送非 HttpOnly cookie 的情况下手动保存 cookie。目前这不是一个真正的选择。

【问题讨论】:

  • 我最近遇到了这个问题。我为我的混合应用程序使用通用 cookie。在桌面上一切正常。在 android 上,我发现 document.cookies 不会设置如果字符串值中存在选项...在我对 cookies.set() 的调用中删除选项允许设置 cookie。有谁知道这是为什么?

标签: android ios cordova ionic-framework cookies


【解决方案1】:

我在 cookie 和 cordova 方面也遇到了一些麻烦。

就我而言,插件 cordova-plugin-cartegraph-cookie-master 帮助我获取和设置 cookie。

源插件:

https://www.npmjs.com/package/cordova-plugin-cartegraph-cookie-master

安装:

cordova plugin add cordova-plugin-cartegraph-cookie-master

用法: 获取 cookie 值:

cookieMaster.getCookieValue('http://<some host>:<some port>', '<cookie name>', function(data) {
  console.log(data.cookieValue);
}, function(error) {
  if (error) {
    console.log('error: ' + error);
  }
});

设置 cookie 值:

cookieMaster.setCookieValue('http://<some host>:<some port>', '<cookie name>', '<cookie value>',
    function() {
        console.log('A cookie has been set');
    },
    function(error) {
        console.log('Error setting cookie: '+error);
    });

【讨论】:

  • 你是如何将这个cordova插件与ionic一起使用的
猜你喜欢
  • 2017-08-27
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2015-06-07
  • 2012-09-27
  • 2018-06-22
  • 1970-01-01
相关资源
最近更新 更多