重新启动浏览器时,不会删除没有过期的cookie

时间:2012-12-18 16:57:21

标签: 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仍然存在。

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

任何人都曾经历过类似的事情吗?

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

干杯

1 个答案:

答案 0 :(得分:0)

我没有试图完全解决这个问题,我确实有一个应该有用的建议,但有一点需要注意;它不仅会将您的会话限制在浏览器会话中,还会限制在特定的选项卡上。

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

不是最好的解决方案,但它会抵消你所看到的问题。

此外,如果您需要在window.name中存储的不仅仅是该标识符,您可以使用json_encode然后base64_encode一个对象来存储更多属性。