我试图在javascript中设置会话cookie,就像这样:

document.cookie = 'name=alex; path=/'

但是Chrome不会删除它,即使我退出浏览器,重新启动它。

我检查了Firefox和Opera,两者都按预期工作-它们在浏览器退出时删除会话cookie。

Chrome是否忽略了过期规则?

我检查了多个操作系统,发现会话cookie在Windows XP和Ubuntu的Chrome上被删除,但在Mac OSX Lion上没有。


当前回答

一个简单的替代方法是使用新的sessionStorage对象。根据注释,如果你选择了“continue where I left off”,sessionStorage将在两次重启之间持续存在。

其他回答

一个简单的替代方法是使用新的sessionStorage对象。根据注释,如果你选择了“continue where I left off”,sessionStorage将在两次重启之间持续存在。

谷歌chrome浏览器有一个问题,如果你设置和取消设置cookie不当的方式。这是php代码。我想这会给你一些启发。

集饼干

setcookie('userLoggedIn', 1, 0, PATH);

错误的方式,将无法工作(注意PATH缺失)

setcookie('userLoggedIn', 0, time()-3600);

正确的方法修复了谷歌chrome浏览器的问题

setcookie('userLoggedIn', 0, time()-3600, PATH);

这可能是由于Chrome浏览器设置为继续你离开的地方。

进一步的阅读

Bug报告:Chrome不会删除临时cookie——也就是说,当我关闭所有浏览器Windows时,不会自动注销 问题128513铬:会话Cookies未清除时,Chrome进程关闭 问题128567:仅会话cookie无法删除

这可能是因为Chrome在你关闭浏览器后仍在后台运行。尝试通过以下方法禁用此功能:

开放chrome: / / /设置 点击“显示高级设置…” 向下导航到系统部分,禁用“当谷歌Chrome浏览器关闭时继续运行后台应用程序”。 这将迫使Chrome完全关闭,然后它将删除会话cookie。

然而,我认为Chrome应该检查和删除以前的会话cookie在它开始而不是关闭。

解决方案是使用sessionStorage,供参考:https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage