214

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

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

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

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

Chrome只是忽略过期规则吗?

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

4

14 回答 14

27

我刚刚在“浏览会话结束”时设置为过期的 cookie 遇到了同样的问题。

不幸的是它没有,所以我玩了一下浏览器的设置。

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

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

于 2013-02-08T13:03:27.573 回答
21

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

在高级设置下,我未选中'Continue running background apps when Google Chrome is closed',我的会话 cookie 开始正常工作。

对于我们所有一直在编码期望会话 cookie 会在用户完成浏览时被清除的开发人员来说,这仍然是一个痛苦。

于 2012-09-25T22:26:50.783 回答
12

我必须在 Chrome 的高级设置下都未选中:

  • '当谷歌浏览器关闭时继续运行后台应用'
  • “从我离开的地方继续”,“在启动时”
于 2015-02-11T01:49:24.847 回答
11

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

  1. 打开 chrome://settings/
  2. 点击“显示高级设置...”
  3. 向下导航到系统部分并禁用“在 Google Chrome 关闭时继续运行后台应用程序”。这将强制 Chrome 完全关闭,然后删除会话 cookie。

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

于 2013-10-24T08:16:46.633 回答
3

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

于 2013-11-21T21:56:33.653 回答
2

我在 Windows 8.1 中遇到了与“document.cookie”相同的问题,Chrome 删除 cookie 的唯一方法是从任务管理器中关闭它(这不是一个真正花哨的方式),所以我决定从后端管理 cookie 或使用一些东西像“js-cookie”。

于 2015-06-05T21:04:18.310 回答
1

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

我也面临这个问题,但现在解决了。

于 2013-08-14T05:49:38.157 回答
1

这个问题是因为你使用的是chrome的Continue where I left offand Continue running background apps when Google Chrome is closedfeature(目前我的版本是96)。

请考虑将它们关闭(以测试功能)。

于 2021-12-21T10:50:55.807 回答
-1

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

启用Clear cookies and site data when you quit Chrome.

为我工作

于 2020-03-25T18:41:50.720 回答
-2

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

因此,如果您使用如下方式管理会话,则可能会导致 cookie 在浏览器中挂起的时间比预期的要长。

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

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

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

于 2018-01-17T03:00:04.380 回答
-2

我刚刚遇到了 Chrome 存储会话 ID 的问题,但我不喜欢禁用选项从我离开的地方继续的想法。我查看了网站的 cookie,发现登录页面的 Session ID cookie。删除它并没有解决我的问题。我搜索域,发现域上有另一个会话 ID cookie。手动删除两个会话 ID cookie 解决了问题,我没有关闭并重新打开可能已恢复 cookie 的浏览器。

于 2019-03-07T20:31:43.257 回答
-3

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

于 2017-12-01T06:35:38.040 回答
-9

如果您以不正确的方式设置和取消设置 cookie,Google chrome 就会出现问题。这是php代码。认为这会给你的想法。

设置 cookie

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

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

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

正确的方法解决了谷歌浏览器上的问题

setcookie('userLoggedIn', 0, time()-3600, PATH);
于 2014-11-28T16:18:09.653 回答