js-cookie库在Android上运行,但不在iOS设备上运行

问题描述 投票:4回答:2

我正在构建一个使用js-cookie的Web应用程序。我使用以下命令将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

我究竟做错了什么?

javascript cookies js-cookie
2个回答
2
投票

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

现在,在你的问题。你可以访问传统的cookie API吗?你可以这样做:

document.cookie

如果不是,那你就有一个很大的问题。也许你已经转移到iOS 11并被纳入了更多cookie政策:http://adage.com/article/digitalnext/ios-11-kill-cookie/311444/或者你可能启用了一个广告块/不跟踪功能。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.