Firefox会话Cookie


105

一般而言,当给定一个没有有效期的cookie时,现代浏览器会将其视为“会话cookie”,它们将在浏览会话结束时(通常是在浏览器实例关闭时)删除该cookie。

IE,Opera,Safari和Chrome均支持此行为。

但是firefox(最新的3.0.9正确发行版)似乎不遵循此规则,从我可以看出,当浏览器关闭,用户注销或重新启动操作系统时,cookie不会过期。

那么,当Firefox无限期地持续存在时,为什么将它们称为会话Cookie?

有谁知道Firefox如何处理会话Cookie过期?


1
我认为这实际上并没有得到解决。我也看到了
bhollis

感谢BRH所做的研究,实际上我确实看到了您的答复,这意味着在标记您的答案之前先检查您的研究,完全忘了!道歉
meandmycode

Answers:


116

这显然是设计使然。查看此Bugzilla错误:https ://bugzilla.mozilla.org/show_bug.cgi ? id =443354

Firefox具有关闭Firefox的功能,它可以保存所有选项卡,然后还原浏览器,然后这些选项卡返回。这就是所谓的会话还原。我没有意识到的是,它也将还原这些页面的所有会话cookie!就像您从未关闭过浏览器一样。

从某种意义上说,这是有道理的,如果您的浏览器崩溃了,您可以回到原来的状态,但是对于那些用于清除cookie的Web开发人员来说,这有点令人不安。我有一些几个月前的旧会话Cookie,这些Cookie是我一直在标签页中打开的网站所设置的。

要进行测试,请关闭浏览器中的所有选项卡,然后关闭浏览器并重新启动。我认为您的网站的会话Cookie在这种情况下应该清除。否则,您必须关闭会话还原。


1
我发现这种行为值得怀疑,感谢您的研究。如果选择“保存并退出”或“还原选项卡和窗口”,则在关闭浏览器后,所有会话cookie均保持不变。“用户”摆脱它们的唯一方法是,首先关闭选项卡,然后关闭浏览器。
在2009年

您是否找到解决方法?我真的不希望Firefox挖掘旧的会话,因为我需要应用程序中的会话ID是唯一的。
2010年

抱歉,我不知道解决方法。从您的应用程序的角度来看,他们的浏览器从未关闭过。
bhollis 2010年

6
我已经注意到了此决定(IMO的不良建议)的某些含义:mrclay.org/index.php/2010/05/02/…–
史蒂夫·克莱

我今天也被这种行为咬住了。我以为我的应用程序出了点问题。然后我测试了Chrome和其他浏览器,然后发现Firefox是罪魁祸首。
丁格尔2010年


3

这应该工作。我曾经是cookie模块测试人员之一,并且我认为没有任何设计原因会导致这种行为不同(尽管如果崩溃,则会话cookie 可能被设计为在重新启动时仍然存在。)

您是否在“首选项”菜单>“隐私”选项卡>“显示Cookie ...”按钮中查看Cookie?

另外,您是否尝试过新的个人资料?


非常奇怪,如果这只是我在其上测试过的两个系统上的一个错误,我会比较高兴。我在firefox中更改过的唯一选项是关闭和打开javascript。.我安装的插件是firebug和Web开发人员工具栏..还是很高兴。
meandmycode

Cookie模块首选项也多种多样,但我不记得其中任何一个都具有这种功能。FF3确实从文本文件切换到cookie数据库,也许您的数据库行为不当。
2009年

2

我不同意上面的meandmycode。

HTTP规范https://www.ietf.org/rfc/rfc6265.txt 讨论了客户端应如何处理带有Expires的Set-Cookie标头:

如果服务器希望用户代理在多个“会话”上保留cookie(例如,用户代理重新启动),则服务器可以在Expires属性中指定到期日期。请注意,如果用户代理的cookie存储超过其配额,或者用户手动删除了服务器的cookie,则用户代理可能会在到期日期之前删除该cookie。

逻辑上的扩展是,服务器必须要求浏览器在退出时不维护Cookie的唯一方法是不设置Expires值(即会话Cookie)。如果浏览器不支持该语义,则它不支持服务器的响应。

本质上,用户代理决定忽略服务器请求,并像设置了Expires值一样进行操作。


1

这在共享用户环境中有点令人担忧。如果我设置的身份验证cookie设置为在会话结束时过期。在关闭浏览器并且另一个用户启动Firefox之后,此设置将在Firefox中保留。设置Cookie的有效期是有原因的!


1
好吧,为了公平起见,“为Cookie设置一个到期日期是有原因的”-在这种情况下,您并没有设置到期日期,因此由浏览器来决定Cookie的持续时间。
meandmycode 2012年

0

我很困惑Mozilla已经离开了它好几年了。

OK ..所以我退出FF并关闭PC。第二天,FF开始并打开最后一组页面(非常方便的功能),但是它恢复了会话,并且我重新登录到没有“保存我的设置”功能的站点。我知道,因为它们是我建立的网站。无论我用php ini设置做什么,都可以恢复会话。

绝对不应该恢复它们。页面是,但是cookie ini设置为“ 0”的会话没有。

我不明白为什么未将此标记为安全漏洞。当然,我可以在服务器端进行一些其他检查,以根据自上次登录以来的时间查看是否应允许登录,但这不是必需的。

会话不应持续。FF正在操纵Cookie的到期设置。


-1

好吧,这让我感到不安。我的系统已设置好,以便用户可以按EXIT键销毁所有会话cookie。但是,如果用户在没有实际选择退出的情况下关闭浏览器,我希望清除会话cookie。

我实际上使用Google Chrome,IE 9对其进行了测试,并且工作正常。但是Firefox不愿意杀死这个“会话”(如Firebug所报道)的cookie。

好。这就是我所做的。我从FireFox主菜单中选择了“退出”,然后从开始就按预期进行了设置(不知道为什么)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.