javascript - 没有过期的cookie在浏览器重启时不会被删除

标签 javascript

我使用这个函数在客户端写入cookie:

createCookie: function(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

我这样设置cookie:

createCookie("foo", "1"); // no expiration time

我希望浏览器在关闭时删除这个cookie,事实上大多数时候它都是这样工作的。但我注意到,在 Firefox 中情况并非如此,即使重新启动后 cookie 仍保留在那里。

我想这取决于一些设置,这些设置允许用户在关闭浏览器时卡住浏览器的状态,以便在重新启动浏览器时,您使用的所有选项卡仍然存在并启动。

有人经历过类似的事情吗?

您可以推荐任何解决方法吗?

干杯

最佳答案

我还没有尝试完全解决这个问题,我确实有一个应该可行的建议,但有一个警告;它不仅会将您的 session 限制为浏览器 session ,还会将您的 session 限制为特定选项卡。

您可以做的是将 window.name 设置为随机数,然后将该标识符附加到该 session 的 cookie 名称中。读取 cookie 时,仅使用标识符与窗口名称中的标识符匹配的 cookie。选择 window.name 是因为它在刷新和导航过程中仍然存在。

这不是最好的解决方案,但它会解决您遇到的问题。

此外,如果您需要在 window.name 中存储的不仅仅是该标识符,您可以对对象进行 json_encode 和 base64_encode 来存储更多属性。

关于javascript - 没有过期的cookie在浏览器重启时不会被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937835/

相关文章:

javascript - 如何从 JavaScript 剪切、复制和粘贴到用户的剪贴板

javascript - 如何获取多维数组中最长的单词?

javascript - 如何在不使用innerHTML的情况下将图像元素添加到javascript中的div?

javascript - html时如何scrollTop,body设置为高度: 100%?

javascript - ng-click 事件显示未定义

javascript - 附加 Jquery.min.js 时发生 Jquery 冲突

javascript - jQuery : How to use percentage width of one element as a value to animate another element, 并确保即使在调整窗口大小时它也能正常工作?

javascript - 提交后在另一个页面显示多个复选框的值

javascript - 处理 Bootstrap 列空闲空间

javascript - XMLHttpRequest 对象的 open() 和 send() 方法有什么区别?