我使用这个函数在客户端写入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/