11

我知道这个问题已经被问了一千次,但没有一个答案能真正给我我正在寻找的东西。我正在使用jQuery cookie来存储一些信息,但我希望它们在浏览器关闭时过期。window.unload不是一个可行的选择(阅读:不起作用。)

我的问题是:当浏览器关闭时,是否真的可以将 cookie 设置为过期,就像会话一样?如果是这样,有人知道怎么做吗?

更新:事实证明这很简单,而不是通过 expiry: 0 (这不起作用),根本不通过任何到期。嗯,这就解释了为什么没有很多问题。

谢谢大家。

4

3 回答 3

23

事实证明这很简单,而不是通过 expiry: 0 (这不起作用),只是根本不通过任何到期。嗯,这就解释了为什么没有很多问题。

因此,不要像这样使用标志传递过期时间:

$.cookie(key, value, { expiry: 0, domain: '', path: '' });

您只需省略到期值:

$.cookie(key, value, { domain: '', path: '' });

它有效。这么简单的事情,让我很困惑。

不过还是谢谢!

于 2013-10-01T14:02:26.257 回答
2

RFC 2965 规范中是可能的。也就是说,如果您在 cookie 处理代码中设置“Discard”属性并且浏览器支持它,那么它是可能的。

也就是说:jQuery cookie 不支持 Discard 属性。您必须像这样扩展jQuery-Cookie代码(大约在原始文件的第 57 行):

        return (document.cookie = [
            config.raw ? key : encodeURIComponent(key),
            '=',
            config.raw ? value : encodeURIComponent(value),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            options.path    ? '; path=' + options.path : '',
            options.domain  ? '; domain=' + options.domain : '',
                            options.discard ? '; Discard=' + options.discard : '',
            options.secure  ? '; secure' : ''
        ].join(''));
于 2013-10-01T13:58:28.923 回答
1

如果您使用这样的默认设置

 $.cookie.defaults = { path: '/', expires: 365 };

那么您需要为每个 cookie 值使用以下属性

$.cookie(key, value, { expires: null });
于 2014-12-10T12:53:02.017 回答