iOS Safari / Chrome中的Cookie持久性

时间:2017-10-16 16:10:47

标签: javascript ios google-chrome cookies safari

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

我在这里缺少什么?

这是我的javascript代码设置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 + ";path=/";
  }

  setCookie("test", "random test value", 365);

1 个答案:

答案 0 :(得分:1)

我刚刚遇到这个问题,因为在生产服务器上测试时,Cookie在Android /桌面设备上持久存在但在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)的技术细节。任何人都可以推荐任何有用的链接吗?