我正在尝试在javascript中设置会话cookie,如下所示:

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


但是,即使退出浏览器并再次启动,Chrome也不会删除它。

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

Chrome浏览器是否只是忽略到期规则?

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

评论

这与我的帖子中的内容完全相同,即没有到期,不确定Httponly。我不是要手动删除它。问题是浏览器应在退出时将其删除,但Chrome不会这样做。

>>>,发现会话Cookie已在Windows XP中的Chrome上删除。否。在Windows XP中,Chrome也不会删除Cookie。我现在使用Windows XP,并且发现了您的问题,因为遇到了同样的问题。唯一的区别是我使用ZF2并通过Session程序包设置了会话选项。但这仍然是通常的php方式-ini_set(“ session.cookie_lifetime”,0)和'remember_me_seconds'=>1。但这无济于事。 Firefox可以正常运行,但Chrome不能正常运行。

chrome v85
对我不起作用,退出后会话cookie无法清除

#1 楼



进一步阅读

错误报告:Chrome浏览器不会删除临时Cookie,即不会自动注销我当我关闭所有浏览器Windows
Chromium中的问题128513:Chrome进程关闭时未清除会话Cookie
问题128567:仅会话的Cookie不会删除


评论


注意:如果在“启动Firefox”下拉菜单中选择了“显示上次显示我的窗口和选项卡”,则在Firefox中可能会遇到完全相同的问题。出于同样的原因。按照设计,将保留会话cookie,以在浏览器崩溃时帮助保持工作流程。

– webnesto
2012年9月5日在21:11

对。因此,Chrome和FF都破坏了会话Cookie的功能。对于chrome,已经报告了该问题:code.google.com/p/chromium/issues/detail?id=128513并标记为WONTFIX。显然,Google不会在Chrome中遵循网络标准和安全漏洞,因此FF也不会。请参阅FF错误(至少没有关闭):bugzilla.mozilla.org/show_bug.cgi?id=443354这两个浏览器的状态令人遗憾。

–lucian303
2012年10月22日20:41



w3.org/Protocols/rfc2109/rfc2109:Max-Age默认行为是在用户代理退出时丢弃cookie。

–lucian303
2012年10月22日21:12

@ lucian303,尽管这看起来确实像是在违反标准,但我认为如果没有“保持会话cookie存活”,您就无法拥有“从上次继续浏览”的功能。例如,Opera,rekonq和IE9(通过“新标签页”中的“重新打开上一个会话”链接)实现了前者而没有后者。结果,此类浏览器会向您显示缓存的页面,这些页面错误地指示您仍在登录和/或已停止使用CSRF保护令牌。

–sayap
13年5月5日在8:23

为什么它们会向您显示缓存的页面?可笑的是,一年后没有修复此错误!

–迈克尔
2014年1月3日,2:25

#2 楼

我只是对Cookie设置了相同的问题,该Cookie设置为在“浏览会话结束”时过期。

不幸的是,它没有,所以我在浏览器的设置上做了一些尝试。

原来,关闭浏览器时记住打开的选项卡的功能是问题的根源。 (该功能被命名为“启动时”-“我离开的地方继续。”。至少在当前版本的Chrome上)。

Opera和Firefox也会发生这种情况。

评论


这立即为我解决了问题!很高兴知道事情为什么会以这种方式发生:)

–快速反应
13年3月30日在19:24

不能接受我不想让Chrome忘记打开了哪些窗口,因为我经常不小心退出了Chrome,并打开了许多标签页。 (感谢OS X让我滚动了没有焦点的窗口,使我认为它确实具有焦点。但是,情况有所不同)。如果我必须重新登录,就这样吧。故意退出时不注销我,将很难确保我仍未登录,这可能是一个很大的安全问题。

–迈克尔
2014年1月3日在2:24



至少默认情况下未启用此选项。 Google帮助中还提到了此“功能”:“ Chrome还将还原您的浏览数据和会话Cookie。”。海事组织,这应该是“继续我离开的地方”下的一个附加子选项。

–怀特先生
2014年6月9日10:39

顺便说一句,这似乎不再是Opera的“问题”(经过Opera 22的测试,尽管我没有注意到这至少是一个或两个版本的问题)。当相应的“显示我的窗口和标签,从上次”火狐29个恢复会话cookie被选中(按照文档)。

–怀特先生
2014年6月9日15:13

@Michael并没有多大意义,因为大多数使用会话的网站都不允许您退出登录页面。那么,您是否希望浏览器继续从上次中断的地方继续?

– Deji
16年5月23日在13:31

#3 楼

我刚遇到这个问题。
我注意到,即使关闭浏览器后,我仍在运行许多Chrome进程。原来这些都是我的Chrome扩展程序中的。

在高级设置下,我未选中'Continue running background apps when Google Chrome is closed',我的会话cookie便开始按预期方式工作。

对于一直在编码期望该会话的所有开发人员,仍然感到痛苦用户完成浏览后,cookie将被清除。

评论


通常,“后台应用程序”与会话cookie持久性无关(除非您的扩展名能记住会话cookie ?!)。设置中的“从我离开的地方继续”选项还可以还原会话Cookie(如另一个答案中所述)。

–怀特先生
2014年6月9日在10:42

在禁用该选项后,它可以正常工作了,我的会话Cookie清除了!

– Walid Ammar
2014年7月5日,下午1:43

这确实是导致不删除会话cookie的另一个原因。谢谢。

– L四
1月8日15:39

#4 楼

我必须在未启用Chrome的高级设置下同时选中这两个选项:


'关闭Google Chrome时继续运行后台应用程序'
“继续我离开的地方”,“打开启动”


评论


应该将其投票较高,或者应编辑最佳答案以包括“正在运行的后台应用程序”。这影响了我。关闭“从我离开的地方继续”并不能解决问题。我还必须关闭“关闭Google Chrome浏览器后继续运行后台应用程序”。然后,当我关闭Chrome时,我的会话Cookie被正确删除。

–马特·韦尔克
19年7月28日在18:12

我认为这确实是最好的答案。

– L四
1月8日15:40

#5 楼

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


打开chrome:// settings /
点击“显示高级设置...”
导航至“系统”部分并禁用“关闭Chrome浏览器后继续运行后台应用程序”。
这将强制Chrome完全关闭,然后将删除会话Cookie。

但是,我认为Chrome应该在启动时检查并删除以前的会话Cookie,而不是关闭。

#6 楼

一个简单的替代方法是使用新的sessionStorage对象。根据评论,如果选中了“从我离开的地方继续”,则sessionStorage将在两次重启之间保持不变。

评论


不,如果选中了“从我上次中断的地方继续”,它在两次重启之间仍然存在。

–奥利
2014年2月23日在17:28

TimDog:“ sessionStorage将在重新启动之间保留。” @Olli“否,它在重新启动之间确实存在”。伙计们,您同意还是争论?我不明白:)啊,等等,我明白了...

– naXa
18-10-23在15:56



不能在Chrome 84中保持不变,“继续我离开的地方”标志是无关紧要的。

–ogostos
9月2日下午6:32

#7 楼

我在Windows 8.1中遇到了与“ document.cookie”相同的问题,Chrome删除cookie的唯一方法是将其从任务管理器中关闭(这并不是真正的理想方式),因此我决定从后端管理cookie或使用其他方法例如“ js-cookie”。

#8 楼

您是否尝试过在Google Chrome浏览器中删除环聊扩展程序?因为它即使关闭所有窗口也会迫使chrome继续运行。

我也遇到了问题,但现在已解决。

#9 楼

转到chrome://settings/content/cookies?search=cookies

启用Clear cookies and site data when you quit Chrome

为我工作

评论


这不是清除会话cookie的解决方案,您将删除每个cookie

–ogostos
9月2日6:00

#10 楼

如果您为php会话cookie设置了域,则浏览器似乎会将其保留30秒钟左右。关闭选项卡或浏览器窗口似乎并不重要。

因此,如果您使用以下方法管理会话,则可能会导致Cookie在浏览器中的挂起时间超出预期。 。

ini_set("session.cookie_domain", 'www.domain.com');


我发现摆脱挂起的cookie的唯一方法是删除设置会话cookie的域的代码行。还要注意session_set_cookie_params()函数。域名的前缀似乎也与此问题无关。

这可能是一个php bug,因为在会话被销毁后php在标头中发送了一个会话cookie(即PHPSESSID=b855ed53d007a42a1d0d798d958e42c9)。或者这可能是服务器传播问题,但由于我的测试是在专用服务器上进行的,所以我不这么认为。

#11 楼

我只是遇到了Chrome存储会话ID的问题,但我不喜欢禁用从上次中断的位置继续执行此选项的想法。我查看了网站的Cookie,并找到了登录页面的会话ID Cookie。删除那并不能解决我的问题。我搜索该域,发现该域上还有另一个会话ID cookie。手动删除两个会话ID cookie可以解决此问题,而我没有关闭并重新打开可能已恢复cookie的浏览器。

#12 楼

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

#13 楼

如果您以不正确的方式设置和取消Cookie,则Google chrome会出现问题。这是PHP代码。以为这会给您带来想法。

设置cookie

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


错误的方式将不起作用(注意PATH丢失)

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


正确的方法修复了Google chrome上的问题

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


评论


问题不是关于不正确的cookie。

– John K
15年4月8日在12:43