代码之家  ›  专栏  ›  技术社区  ›  meandmycode

Firefox会话cookies

  •  101
  • meandmycode  · 技术社区  · 15 年前

    一般来说,当给定的cookie没有过期期时,现代浏览器会将此cookie视为“会话cookie”,它们会在浏览会话结束时(通常是在浏览器实例关闭时)移除cookie。

    ie、opera、safari和chrome都支持这种行为。

    然而,Firefox(3.0.9最新的正确版本)似乎没有遵循这个规则,从我可以看出,当浏览器关闭时,或者当用户注销或重新启动操作系统时,cookie不会过期。

    那么,为什么firefox称这些为会话cookie,而它们的持续时间是无限期的呢?

    有人知道firefox如何处理会话cookie过期吗?

    7 回复  |  直到 8 年前
        1
  •  109
  •   bhollis    15 年前

    这显然是故意的。看看这个Bugzilla错误: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

    firefox有一个功能,你可以关闭firefox,它提供保存你所有的标签,然后你恢复浏览器和这些标签回来。这叫做会话恢复。我没有意识到的是,它还将恢复所有的会话cookies页!它把它当作你从未关闭过浏览器。

    这在某种意义上是有道理的,如果你的浏览器崩溃了,你可以直接回到原来的位置,但是对于那些用来会话cookies的web开发人员来说,这有点令人不安。我有一些几个月前的旧会话cookie,是由我总是在标签页中打开的站点设置的。

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

        2
  •  5
  •   Tomap    15 年前

    两个想法:

    1. 您的会话管理器有问题(ff3中包含的或扩展中包含的,如tabmixplus)
    2. 使用firebug+firecokie( https://addons.mozilla.org/en-US/firefox/addon/6683 )调试!
        3
  •  3
  •   benc    15 年前

    这应该管用。我曾经是cookie模块测试人员之一,我不认为有任何设计上的原因会导致这种行为不同(尽管如果崩溃,会话cookie 可以 设计为在重新启动时继续运行…)

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

    还有,你试过新的个人资料吗?

        4
  •  1
  •   Jason    12 年前

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

        5
  •  0
  •   anoldermark    10 年前

    我很困惑的是,Mozilla已经离开这几年了。

    好啊。。所以我退出FF,关掉电脑。 第二天ff启动并打开最后一组页面(非常方便的功能),但它会恢复会话,我会重新登录到没有“保存我的设置”功能的站点。 我知道因为它们是我建造的。 无论我使用php ini设置做什么,会话都会被恢复。

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

    我不明白为什么这不是安全漏洞。 当然,我可以在服务器端做一些额外的检查,看看是否应该允许登录,基于上次登录的时间,但不应该需要。

    会话不应持续。 FF正在操作Cookie过期设置。

        6
  •  0
  •   Reinstate Monica -- notmaynard Antonio Dias    8 年前

    我不同意上面的意思。

    http规范 https://www.ietf.org/rfc/rfc6265.txt 讨论客户端应如何使用过期设置cookie头:

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

    其逻辑扩展是,服务器要求浏览器在退出时不维护cookie的唯一方法是设置no expires值(即会话cookie)。如果浏览器不遵守该语义,则它不遵守服务器的响应。

    实际上,用户代理决定忽略服务器请求,并像设置了expires值一样执行操作。

        7
  •  -1
  •   jdisla    11 年前

    我很不安。我的系统是这样设置的,用户可以点击退出,我销毁所有会话cookie。但如果用户关闭浏览器而没有选择退出,我希望清除会话cookies。

    我用google chrome,ie 9测试过了,效果很好。但是firefox不愿意终止这个“会话”(firebug报道)cookies。

    好啊。我就是这么做的。我从Firefox主菜单中选择了退出,从那以后,一切都如我所愿(不知道为什么)。