iOS Safari/Chrome中的Cookie持久性



当我在iOS Safari(和Chrome)上关闭和重新打开浏览器时,我的持久cookie将被删除。我在iOS 11上,但也在iOS10/9上进行了测试。Cookie在Android和桌面上正确保存。奇怪的是,它适用于iOS上的Firefox。

我在这里错过了什么?

这是我设置cookie和过期日期的javascript代码:

setCookie = function(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
setCookie("test", "random test value", 365);

我刚刚遇到这个问题,当在生产服务器上测试时,cookie在安卓/桌面设备上持久存在,但在iOS11上不存在。解决方案似乎是定义cookie的域:

setCookie = function(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=" + window.location.hostname + ";path=/";
}
setCookie("test", "random test value", 365);

iOS11在接受哪些cookie方面似乎更加严格。我可以找到很多关于它更好地保护隐私的营销宣传,但很少有关于如何根据新的限制正确实现(例如持久登录/SSO)的技术细节。有人能推荐一些有用的链接吗?

最新更新