Javascript 在浏览器关闭时删除 cookie,即使它设置为在启动时恢复 cookie

Posted

技术标签:

【中文标题】Javascript 在浏览器关闭时删除 cookie,即使它设置为在启动时恢复 cookie【英文标题】:Javascript delete cookie on browser close even if it's set up to restore cookies on startup 【发布时间】:2012-11-22 03:38:47 【问题描述】:

我有一个烦人的问题,它遍布整个互联网,但我找不到针对我的问题的具体解决方案。这里是:

在 Chrome 中,您可以在浏览器启动时选择“从上次中断的地方继续”。不幸的是,这意味着所有会话 cookie 都会在浏览器关闭和恢复或浏览器启动时保留。一旦浏览器关闭,我需要我的客户端(javascript)应用程序来终止 cookie,但即使我没有设置到期日期也不会发生(因此 cookie 成为会话 cookie,即使 Chrome 也这么说浏览会话结束时过期)。问题是,即使我关闭浏览器或重新启动计算机,Chrome 也不会终止浏览会话,因为那个该死的启动设置。

一种方法是指定未来 15 分钟(或其他时间)后的到期日期。在每次用户操作时,cookie 的到期日期都会刷新(重新创建 cookie)。如果用户不活动超过 15 分钟(或其他任何时间),cookie 就会消失。我无法承受让另一个人打开浏览器并发现自己处于前一个人的会话中的 15 分钟,而且我不能让当前用户在每次他上厕所后登录。所以我需要这个:用户登录,cookie被设置并一直持续到浏览器关闭。这是会话 cookie 的正常行为,但是...(上一段)。

我还考虑过在窗口 unload() 事件中删除 cookie,但是如果应用程序在多个选项卡中打开并且用户只关闭其中一个呢?我可以每秒轮询一次 cookie 的存在,并将 cookie 始终保存在 Javascript 变量中,然后如果用户关闭另一个选项卡,我可以每秒恢复一次 cookie(如果需要)。这将使 cookie 保持活动状态,直到我的应用程序的最后一个选项卡关闭,即浏览器退出。这是我目前最好的解决方案,但我讨厌它。

有没有人知道另一种(更清洁的)方法来实现相同的目标?有什么方法可以指定我不关心用户的启动设置的 Chrome(和/或其他浏览器),我的 cookie 应该在浏览器关闭时消失?

我希望我有足够的意义:)

谢谢

【问题讨论】:

【参考方案1】:

重点在于这是一个 user 选项。它不是应用程序选项。您的应用程序绝对没有业务尝试解决它,并且应该将这种情况视为用户真的在同一个会话中。

【讨论】:

我知道。在这种情况下,它实际上是一个应用程序选项,我只想知道如何在浏览器关闭时杀死我的 cookie,而不管用户的偏好如何。此外,我不想指示用户更改浏览器启动设置,因为他可能希望它用于其他应用程序,如 facebook、gmail 等。 您可以随时尝试将 cookie 的到期日期设置为去年。浏览器将删除您的 cookie,因为它已过期。但您只能对您的页面执行此操作。 安德烈,这在这个评论线程中是题外话,应该只与先生有关。 LRO 的回答。请将您的评论移到单独的答案中,我会评论您的答案,让您知道为什么错了;)感谢您抽出宝贵的时间 这就像你没有读我的答案,Mtz。我知道您正在尝试绕过用户设置,我是说不要 是的......祝你好运,向(某些)客户解释这一点;)我不是说你错了,这就是为什么我会接受你的回答,但有时客户无论如何都想要错误的东西你是怎么解释的……

以上是关于Javascript 在浏览器关闭时删除 cookie,即使它设置为在启动时恢复 cookie的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 在浏览器关闭时删除 cookie,即使它设置为在启动时恢复 cookie

为啥javascript localStorage不持久并删除值[关闭]

易语言浏览器独立cook(多开)

易语言浏览器独立cook(多开)

在nodejs中删除浏览器关闭时的会话

禁用javascript时条纹会发生啥[关闭]