iOS Safari/Chrome中的Cookie持久化问题

7

当我在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);
1个回答

6

我刚刚在生产服务器上测试时发现,当使用 Android / Desktop 设备时,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方面更加严格。我能找到很多关于它在隐私方面做得更好的营销宣传,但是很少有关于如何在新限制条件下正确实现事物(例如持久登录/单点登录)的技术细节。是否有人可以推荐一些有用的链接?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接