我正在尝试在javascript中设置会话cookie,如下所示:
document.cookie = 'name=alex; path=/'
但即使我退出浏览器并重新启动浏览器,Chrome也不会将其删除 .
我检查了Firefox和Opera,两者都按预期工作 - 他们在浏览器退出时删除了会话cookie .
Chrome是否只是忽略过期规则?
我检查了多个操作系统,发现在Windows XP和Ubuntu中Chrome上删除了会话cookie,但在Mac OSX Lion中没有 .
11 回答
将Chrome设置为 Continue where you left off 可能会导致此问题 .
进一步阅读
Bug report: Chrome is not deleting temporary cookies – i.e. not logging me out automatically when I close all browser Windows
Issue 128513 in Chromium: Session Cookies not cleared when Chrome processes closed
我刚刚遇到了与“浏览会话结束”设置为过期的cookie相同的问题 .
不幸的是它并没有因为我在浏览器的设置上玩了一下 .
事实证明,在浏览器关闭时记住打开的选项卡的功能是问题的根源 . (该功能名为“启动时” - “继续我离开的地方” . 至少在当前版本的Chrome上) .
Opera和Firefox也会出现这种情况 .
我刚才有这个问题 . 我注意到即使在我关闭浏览器后,我也运行了许多chrome进程 . 事实证明每个都来自我的chrome扩展 .
在高级设置下,我取消选中
'Continue running background apps when Google Chrome is closed'
,我的会话cookie开始正常工作 .对于我们所有开发人员而言,编码期望会话cookie在用户完成浏览时会被清除的后方仍然是一个痛苦的后果
这可能是因为关闭浏览器后Chrome仍在后台运行 . 尝试通过执行以下操作禁用此功能:
打开chrome:// settings /
点击"Show advanced settings ..."
向下导航到“系统”部分并禁用"Continue running background apps when Google Chrome is closed" . 这会强制Chrome完全关闭,然后会删除会话Cookie .
但是,我认为Chrome应该检查并删除之前的会话cookie,而不是关闭 .
在Chrome的高级设置下,我必须同时取消选中这两项内容:
'Continue running background apps when Google Chrome is closed'
"Continue where I left off","On startup"
一个简单的替代方法是使用新的sessionStorage对象 . 根据评论,如果您选中'continue where I left off',则sessionStorage将在重新启动之间保持不变 .
我在Windows 8.1有与“的document.cookie”同样的问题,即Chrome浏览器删除了Cookie从任务管理器(不是一个真正有趣的方式)关闭它,所以我决定从后端管理的 Cookies 或使用的东西的唯一途径比如“js-cookie” .
您是否尝试在Google Chrome中删除环聊扩展程序?因为即使关闭所有窗户,它也会强制铬继续运行 .
我也面临着这个问题但现在已经解决了 .
解决方案是使用
sessionStorage
,FYI:https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage如果您为php会话cookie设置域,浏览器似乎会持续30秒左右 . 如果关闭选项卡或浏览器窗口似乎并不重要 .
因此,如果您使用以下内容管理会话,则可能导致cookie在浏览器中挂起的时间超过预期 .
我发现摆脱挂cookie的唯一方法是删除设置会话cookie域的代码行 . 还要注意session_set_cookie_params()函数 . 点缀域名前缀似乎与此问题无关 .
这可能是一个php错误,因为php在会话被销毁后在 Headers 中发送会话cookie(即
PHPSESSID=b855ed53d007a42a1d0d798d958e42c9
) . 或者它可能是服务器传播问题,但我不这么认为,因为我的测试是在私人服务器上 .如果您设置和取消设置Cookie不正确的方式,Google Chrome会出现问题 . 这是PHP代码 . 认为这会给你一个想法 .
Set cookie
Wrong way and will not work (notice PATH is missing)
Correct way fixes issue on google chrome