【发布时间】:2011-05-07 03:14:52
【问题描述】:
有一个带有过期时间的会话 cookie,上面写着“会话结束”。 它到底什么时候到期,或者它会永远活着?
【问题讨论】:
-
这完全取决于用户代理,即用户的浏览器,但通常情况下,这确实是在浏览器关闭时。
有一个带有过期时间的会话 cookie,上面写着“会话结束”。 它到底什么时候到期,或者它会永远活着?
【问题讨论】:
“在会话结束时过期”的 Cookie 在用户看来无法预料地过期!
在带有 Safari 的 iOS 上,只要您切换应用,它们就会过期!
在带有 Chrome 的 Android 上,它们不会在您关闭浏览器时过期。
在运行 Chrome 的 Windows 桌面上,它们会在您关闭浏览器时过期。那不是您关闭网站标签的时候;当您关闭所有选项卡时。如果有任何其他浏览器窗口打开,它们也不会过期。如果用户将 Web 应用程序作为窗口运行,他们甚至可能不知道它们是浏览器窗口。因此,您的 cookie 的生命周期取决于用户对某些明显不相关的应用所做的操作。
【讨论】:
当您使用setcookie 时,您可以将过期时间设置为0 或直接省略该参数 - cookie 将在会话结束时过期(即,当您关闭浏览器时)。
【讨论】:
只是为了纠正mingos的答案:
如果您将过期时间设置为 0,则根本不会创建 cookie。我至少在 Google Chrome 上对此进行了测试,当设置为 0 时就是结果。我猜 cookie 在创建后立即过期。
要设置 cookie 使其在浏览会话结束时过期,只需完全省略过期参数即可。
例子:
代替:
document.cookie = "cookie_name=cookie_value; 0; path=/";
只写:
document.cookie = "cookie_name=cookie_value; path=/";
【讨论】:
用户会话结束意味着浏览器关闭。
阅读:http://en.wikipedia.org/wiki/HTTP_cookie#Expires_and_Max-Age
【讨论】: