强制清除会话Cookie (Firefox,Chrome)

5
一些浏览器(如Firefox、Chrome)设计时不会在关闭浏览器时清除会话cookie,如果您设置了某种记住我的开关(例如在Firefox中进入选项 ->常规 ->当Firefox启动时 ->显示上次的窗口和标签页)。这对我们的客户(政府机构……)是个问题,尽管我对HTTP服务器有绝对控制,但无法控制浏览器设置。情况是这样的——他们习惯于共享计算机帐户,但不应该能够共享Web帐户——简单地关闭浏览器应该结束会话,无论浏览器设置如何。

有没有一种优雅的方法来强制执行呢?

目前我想到的唯一解决方案是使用一种死人开关(将cookie更改为仅在一分钟内有效(加密服务器端时间戳),并且在每个页面上都有javascript“pinger”,在20分钟内每半分钟ping服务器上的某个“延长会话”处理程序(登录会话应为20分钟,滑动过期)。


你可以尝试将cookie的过期日期设置为当前时间之前的日期来删除它,但你永远无法确定浏览器是否真正删除了它。用一个“已过期”的值覆盖cookie值是一种更安全的方法。这样你就可以检查cookie的值是否已过期。另外,如果你将过期时间设置为0,浏览器应该会在关闭时删除cookie,但你仍然无法确定。 - x4rf41
@x4rf41 - 编辑了问题以使其更清晰 :) - Ondrej Svejdar
是的,我理解错了,我认为你的方法是唯一可能的解决方案,设置非常短的会话超时时间并使用JavaScript刷新会话。所有其他方法都依赖于浏览器实际上删除标记为在会话结束时过期的Cookie(正如你所说,可以通过浏览器设置规避)。 - x4rf41
@OndrejSvejdar 你有没有找到一个可接受的解决方案? - greenhoorn
2个回答

0
您可以尝试使用HTML5的sessionStorage,它持续整个页面会话期间。页面会话持续的时间与浏览器打开的时间一样长,并且在页面重新加载和还原时保留。在新选项卡或窗口中打开页面将导致启动新会话。
sessionStorage.setItem(“username”,“John”);

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage#sessionStorage

浏览器兼容性 https://code.google.com/p/sessionstorage/ 与每个A级浏览器兼容,包括iPhone或Android。 http://www.nczonline.net/blog/2009/07/21/introduction-to-sessionstorage/


-1

在Firefox中,为了防止浏览器关闭时记住密码,需要进行简单的设置:

  1. 进入设置菜单(右上角)
  2. 选择“选项”
  3. 选择“隐私”选项卡
  4. 将“历史记录”从“记住历史记录”更改为“使用自定义设置”或“永不记住”
  5. 当标记“自定义设置”时,将Cookie设置“保留直到”从“直到过期”更改为“直到我关闭Firefox”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接