1

我使用此函数在客户端中写入 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 仍然存在。

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

有没有人经历过这样的事情?

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

干杯

4

1 回答 1

0

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

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

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

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

于 2012-12-18T17:16:56.027 回答