一个cookie可以有多个过期选项吗?(javascript)

4
我想知道是否有一种方法可以为一个cookie设置多个到期选项。例如,我希望一个cookie在用户关闭浏览器时和30分钟后过期。
这可行吗?

YAHOO.util.Cookie.setSubs("cookiename", cookieData, { expires: 0, expires: time() - 1800, path: "/", domain: "cbc.ca" });

2个回答

3

根据RFC:

如果一个cookie中的属性出现了多次,那么行为是未定义的。

没有办法设置一个像这样过期的cookie;至少,在所有浏览器中都没有跨浏览器的方法可以实现它。 (此外,据我所知,适当的属性是“Max-Age”,而不是“expires”;也许该名称是YUI api的一部分。)

在一段时间后使会话过期通常是安全的服务器端代码自己处理的。 (换句话说,如果会话cookie的时间戳指示过度老化,则明确拒绝该会话cookie作为无效。)


根据RFC 2109,应该使用"Max-Age"。在RFC之前,Netscape支持"Expires",但那是在1997年之前的事情了 :-) - Pointy
这是针对HTTP头描述的...而不是设置cookie的JavaScript字符串。如果您通过服务器端HTTP头响应来操作Cookie,则RFC的描述将是正确的。然而,这个问题与JavaScript有关,而不是服务器端代码。 - Joe Johnson
哦,好的,我明白你的意思了。是的,你是正确的;我卡在了考虑它背后的机制上。不过,在非IE浏览器中(也许包括IE9+),你可以将“max-age”作为JavaScript cookie设置字符串的一部分来设置。 - Pointy

2

您可以在加载事件时设置cookie,但不能设置两个过期时间。您可以获取页面卸载的时间,然后将cookie设置为+30分钟。但您无法在浏览器关闭时设置cookie,您需要一个插件来实现这一点,但是当页面关闭时您可以设置cookie。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接