我使用此功能在客户端写入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仍然存在。
我想这取决于一些允许用户在关闭时冻结浏览器状态的设置,以便在重新启动时,您使用的所有选项卡仍在那里并且正在踢。
任何人都曾经历过类似的事情吗?
您可以推荐的任何解决方法??
干杯
答案 0 :(得分:0)
我没有试图完全解决这个问题,我确实有一个应该有用的建议,但有一点需要注意;它不仅会将您的会话限制在浏览器会话中,还会限制在特定的选项卡上。
您可以做的是将window.name
设置为随机数,然后将该标识符附加到该会话的Cookie名称。读取cookie时,仅使用其标识符与窗口名称中的标识符匹配的cookie。之所以选择window.name
是因为它会在刷新和导航过程中持续存在。
不是最好的解决方案,但它会抵消你所看到的问题。
此外,如果您需要在window.name中存储的不仅仅是该标识符,您可以使用json_encode然后base64_encode一个对象来存储更多属性。