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

时间:2012-12-04 13:33:46

标签: javascript cookies browser settings session-cookies

我有一个唠叨的问题,这是遍布互联网,但我找不到我的问题的具体解决方案。这是:

在Chrome中,您可以选择在浏览器启动时“继续我离开的地方”。遗憾的是,这意味着所有会话cookie都会在浏览器关闭,恢复或浏览器启动时保留。我需要我的客户端(Javascript)应用程序在浏览器关闭后终止cookie,但即使我没有设置到期日期也不会发生这种情况(因此cookie会变成会话cookie,即使Chrome说它也是如此)浏览会话结束时到期)。问题是,即使我关闭浏览器或重新启动计算机,Chrome也永远不会杀死浏览会话,因为这是一个糟糕的启动设置。

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

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

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

我希望我有足够的理解:)

谢谢

1 个答案:

答案 0 :(得分:3)

重点是这是用户选项。它不是一个应用程序选项。您的应用程序绝对没有尝试解决它的业务,并且应该将该场景视为用户确实处于同一会话中。