Firefox会话cookie
一般来说,当给定一个没有到期期限的cookie时,现代浏览器会认为这个cookie是一个“会话cookie”,他们将在浏览会话结束时(通常是浏览器实例closures时)删除cookie。
IE,Opera,Safari和Chrome都支持这种行为。
然而,Firefox(3.0.9最新版本正式发布)似乎没有遵循这个规则,从我可以告诉它不会过期closures浏览器的cookie,或当用户注销或重新启动操作系统..
那么,为什么firefox将这些cookie作为会话cookie,当它们无限期地持续下去呢?
有谁知道如何处理会话cookie到期?
这显然是由devise。 看看这个Bugzilla的bug: https ://bugzilla.mozilla.org/show_bug.cgi ? id = 443354
Firefox有一个closuresFirefox的function,它提供了保存所有的标签,然后你恢复浏览器和这些标签回来。 这就是所谓的会话恢复。 我没有意识到的是,它也会恢复这些页面的所有会话cookie! 它像对待你一样,从来没有closures浏览器。
这是有道理的,如果你的浏览器崩溃,你可以马上回到你所在的位置,但是对于用于会话cookie的web开发人员来说,这有点令人不安。 我从几个月前就有一些旧的会话cookie,这些cookie是由我一直在标签中打开的站点设置的。
要testing这一点,请closures浏览器中的所有选项卡,然后closures浏览器并重新启动它。 在这种情况下,我认为您的网站会话cookie应该清除。 否则,你将不得不closures会话恢复。
两个想法:
- 你的会话pipe理器有问题(包含在FF3中的或包含在扩展中的,比如tabmixplus)
- 使用Firebug + FireCookie( https://addons.mozilla.org/en-US/firefox/addon/6683 )进行debugging!
这应该工作。 我曾经是cookie模块testing人员之一,我不认为有任何devise的原因会有不同的performance(虽然如果你崩溃,会话cookie 可能会被devise为当你重新启动…)
您是否在“首选项”菜单>“隐私”选项卡>“显示Cookie …”button中查看Cookie?
另外,你有没有尝试过新的configuration文件?
这在共享的用户环境中有点令人担忧。 如果我设置了一个在会话结束时设置为过期的身份validationCookie。 浏览器closures后,另一个用户启动Firefox后,这将在Firefox中保留。 由于某种原因,Cookie设置了有效期限!
我很沮丧,Mozilla已经离开了这个好几年了。
好的..所以我退出FF并closures电脑。 第二天,FF启动并打开最后一组页面(很好用的function),但它恢复会话,我重新login到没有“保存我的设置”function的网站。 我知道,因为他们是我build立的网站。 无论我用php ini设置做什么,会话都会恢复。
他们绝对不应该恢复。 页面是的,但与cookie ini会话设置为'0'没有。
我不明白为什么这不会被标记为安全漏洞。 当然,我可以在服务器端进行一些额外的检查,根据上次login的时间来查看是否允许login,但不应该需要。
会议不应该坚持。 FF正在操作cookie过期设置。
那对我来说是令人不安的。 我的系统已经build立,用户可以点击退出,从而销毁所有会话cookie。 但是,如果用户closures浏览器而不实际select退出,我想清除会话cookie。
我实际上用Google Chrome浏览器9进行了testing,并且工作正常。 但是Firefox不愿杀死这个“会话”(如Firebug所报道的)。
好。 这就是我所做的。 我select退出FireFox主菜单,从那以后,做得很好(不知道为什么)。
我不同意上面的meandmycode。
HTTP规范https://www.ietf.org/rfc/rfc6265.txt介绍客户端应该如何处理带有过期的Set-Cookie头文件:;
如果服务器希望用户代理将Cookie保存在多个“会话”(例如,用户代理重新启动)上,则服务器可以在“过期”属性中指定到期date。 请注意,如果用户代理的Cookie存储超出配额,或者用户手动删除服务器的cookie,用户代理可能会在到期date之前删除cookie。
这样做的逻辑延伸是服务器必须要求浏览器在退出时不维护Cookie的唯一方式是设置Expires值(即会话cookie)。 如果浏览器不遵守这种语义,那么它不尊重服务器的响应。
本质上,用户代理正在决定忽略服务器请求,并且像设置了Expires值那样工作。