jQuery cookie是否有可能像会话变量一样过期?

时间:2013-10-01 13:50:55

标签: jquery cookies session-cookies jquery-cookie

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

我的问题是:实际上可能将Cookie设置为在浏览器关闭时过期,就像会话一样?如果是这样,有谁知道怎么做?

更新:原来这很简单,而不是通过到期:0(这不起作用),只是根本没有通过任何到期。嗯,这解释了为什么没有太多问题。

谢谢大家。

3 个答案:

答案 0 :(得分:20)

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

所以不要像这样的标志传递expiry:

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

您只需省略到期值:

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

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

但无论如何,谢谢!

答案 1 :(得分:2)

有可能在RFC 2965 specification。如果您在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(''));

答案 2 :(得分:1)

如果你使用像这样的默认设置

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

然后您需要为每个cookie值使用以下属性

$.cookie(key, value, { expires: null });