4

我正在构建一个使用 js-cookie 的网络应用程序。我使用以下内容将 js-cookie 库导入到我的 html/javascript 文件中:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jscookie/2.1.4/js.cookie.js"></script>

我的 js-cookie 代码与 Android 设备完美配合:正如预期的那样创建和检索 Cookie。但是,相同的代码在 iOS 设备 (iPhone) 上执行时无法写入/读取 cookie。浏览器无关紧要;我已经使用最新版本的 Safari、Chrome 和 Firefox for iOS 进行了测试。

当我尝试在 iOS 设备上读取它们时,写入的 cookie 会返回为未定义。这是我用来编写 cookie 的一段代码:

    //Set expiration cookie...
    nowDate = new Date();
    expiresDate = new Date(nowDate.getTime() + (120 * 120000)); 
    //cookie expires in 4 hours
    Cookies.set('expires', expiresDate, { expires: expiresDate });

任何后续读取这些 cookie 的尝试都可以在 Android 设备上完美运行,但在 iOS 设备上则不行。这是我用来读取 cookie 的示例代码:

    expiresCookie = Cookies.get('expires'); //get expiresCookie

我究竟做错了什么?

4

2 回答 2

2

您在 iO 上使用的浏览器没有任何影响,因为它始终是 Safari 引擎。在 iOs 上,chrome、firefox 和其他只是围绕 safari webview 的框架。这是给专业提示的。

现在,在你的问题中。您可以访问经典的 cookie API 吗?你可以这样做:

document.cookie

如果没有,你有一个非常大的问题。也许您已经迁移到 iOS 11 并包含在 no-more-cookie 政策中: http ://adage.com/article/digitalnext/ios-11-kill-cookie/311444/ 或者您可能启用了广告-阻止/不跟踪功能。

于 2017-12-26T13:24:50.520 回答
1

首先,我认为您在链接到脚本时遇到了问题。如果您在 android 上进行了第一次测试,那么您的设备可能仍将此文件保存在缓存中。

尝试使用此 url 获取最新版本:https://cdnjs.cloudflare.com/ajax/libs/js-cookie/latest/js.cookie.js

然后,还要检查您的 url 是否不在文件位置 (file:///.../file.html) 而不是 http ( http://domain/file.html )。当没有域且没有 http 通信时,浏览器不会保存 cookie。

于 2017-12-30T01:07:39.347 回答