过期时间为“会话结束”的 cookie 啥时候过期?
Posted
技术标签:
【中文标题】过期时间为“会话结束”的 cookie 啥时候过期?【英文标题】:When does a cookie with expiration time 'At end of session' expire?过期时间为“会话结束”的 cookie 什么时候过期? 【发布时间】:2011-05-07 03:14:52 【问题描述】:有一个带有过期时间的会话 cookie,上面写着“会话结束”。 它到底什么时候到期,或者它会永远活着?
【问题讨论】:
这完全取决于用户代理,即用户的浏览器,但通常情况下,这确实是在浏览器关闭时。 【参考方案1】:“在会话结束时过期”的 Cookie 在用户看来无法预料地过期!
在带有 Safari 的 ios 上,只要您切换应用,它们就会过期!
在带有 Chrome 的 android 上,它们不会在您关闭浏览器时过期。
在运行 Chrome 的 Windows 桌面上,它们会在您关闭浏览器时过期。那不是您关闭网站标签的时候;当您关闭所有选项卡时。如果有任何其他浏览器窗口打开,它们也不会过期。如果用户将 Web 应用程序作为窗口运行,他们甚至可能不知道它们是浏览器窗口。因此,您的 cookie 的生命周期取决于用户对某些明显不相关的应用所做的操作。
【讨论】:
这不是我对 iOS (10.2.1) 的观察 @Myster 感谢您的观察。我的观察来自旧版本。 iOS 10.2.1 做了什么? 我只想补充一点,它在 Mac 版 Chrome 上不会过期。尽管我已将其设置为“从您离开的地方继续”。但是,我已经关闭了该域的浏览器选项卡,然后重新启动了 Chrome。我设置的会话cookie仍然存在。 有记录不同行为的好网站吗? @Benedikt developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie【参考方案2】:当您使用setcookie
时,您可以将过期时间设置为0
或直接省略该参数 - cookie 将在会话结束时过期(即,当您关闭浏览器时)。
【讨论】:
案例是:- 我有两个使用不同 cookie 的页面。一个设置为在 30 分钟内到期,另一个设置为在会话结束时。假设两个 cookie 现在都处于活动状态,但我正在查看一个我们设置了 30 分钟的页面,并且我已经有一段时间没有转到另一个页面了。这意味着什么?是否类似于关闭我未查看的页面的浏览器? 请原谅,我不明白这个问题:/ 页面 A 有一个过期时间 = 0 的 cookie,页面 B 有一个过期时间 = 30 分钟的 cookie。这意味着如果您关闭浏览器,cookie A 将被删除,但 cookie B 将保留。如果您未在 30 分钟内关闭浏览器,cookie B 将过期,但 cookie A 将保持活动状态。即使 cookie B 在您查看页面 B 时过期,在大多数情况下也不会发生任何事情,因为一旦您重新加载页面或访问同一站点中的另一个页面,cookie 可能会重新创建。我希望这至少能回答你的问题:| @mingos 我想知道为什么,当我只关闭选项卡时,我会丢失 cookie。我以为当你关闭浏览器时它应该死掉? 请注意,我在 10 年前发布了原始答案。那时,并非所有浏览器都存在浏览器选项卡之间的进程分离(我认为当时只有 Chrome 具有此功能,尽管我对 Firefox 不是 100% 确定)。因此,从本质上讲,关闭浏览器与“结束运行浏览器的进程”是同义词,而不能保证关闭选项卡。现在标签是一个单独的过程,我敢打赌,这就是你的情况:当你关闭标签时,你结束了这个过程,所以临时数据和会话存储被清除。 跟进:我只是在猜测,所以对我上面的评论持保留态度。总而言之,我认为我们可以同意这样一个事实,即“浏览会话”在浏览器和设备之间没有明确定义,因此它是以一种相当不可预测的方式实现的。请与此线程中的其他答案进行比较。【参考方案3】:只是为了纠正mingos的答案:
如果您将过期时间设置为 0,则根本不会创建 cookie。我至少在 Google Chrome 上对此进行了测试,当设置为 0 时就是结果。我猜 cookie 在创建后立即过期。
要设置 cookie 使其在浏览会话结束时过期,只需完全省略过期参数即可。
例子:
代替:
document.cookie = "cookie_name=cookie_value; 0; path=/";
只写:
document.cookie = "cookie_name=cookie_value; path=/";
【讨论】:
【参考方案4】:用户会话结束意味着浏览器关闭。
阅读:http://en.wikipedia.org/wiki/HTTP_cookie#Expires_and_Max-Age
【讨论】:
不再。 Win10上的Chrome 80.0.3987.122可以关闭,当你打开它时,它会恢复会话。换句话说,您必须退出,以确保帐户已关闭。以上是关于过期时间为“会话结束”的 cookie 啥时候过期?的主要内容,如果未能解决你的问题,请参考以下文章
五十九:Flask.Cookie之flask设置cookie过期时间