【问题标题】:Chrome sent duplicate cookieChrome 发送了重复的 cookie
【发布时间】:2026-01-08 05:20:02
【问题描述】:

我正在开发一个 Spring MVC 应用程序,并发现了一个仅在 chrome 上发生的奇怪问题。逻辑是:

  1. 用户请求项目列表
  2. 用户点击添加新按钮,弹出引导对话框允许用户输入名称
  3. 提交时,向服务器发送一个发布请求
  4. 服务器创建一个新项目并将其保存到数据库
  5. 服务器将新项目 ID 存储到 cookie 并向浏览器发送重定向响应
  6. 浏览器请求项目查看页面
  7. 服务器从 cookie 中获取项目 ID 并呈现页面

上述逻辑在几乎所有浏览器(我没有在 IE 上测试过)上运行良好,除了 chrome。我发现根本原因是 chrome 将使用不同的项目 id 存储以前的 cookie,并且在步骤 6 中,chrome 将重复的项目 id cookie 发送到服务器。

知道如何解决这个问题吗?

Chrome[版本 32.0.1700.41 m Aura]

Opera[版本 20.0.1353.0]

Firefox[版本 29.0a1 (2013-12-10)]

Safari[版本 5.1.7 (7534.57.2)] 没有屏幕截图。但它有效

【问题讨论】:

  • 那么,您是否以某种方式解决了这个问题?我遇到了完全相同的问题。
  • 没有。我所做的是忽略所有以前的cookie并处理最后一个
  • 我明白了,这不是我的选择。但我所做的是将 cookie 名称从 JSESSIONID 更改为 SESSIONID,它神奇地开始工作,我不知道它修复了什么以及在哪里修复。

标签: google-chrome spring-mvc servlets cookies


【解决方案1】:

重启 Chrome!

在某些时候(即使在今天这也发生在我身上)Chrome 对域中的内存与缓存在磁盘上的 cookie 感到困惑。这种混乱导致cookies被添加但没有从我所知道的内容中删除。就我而言,我怀疑 McAfee 锁定文件进行扫描。重新启动 Chrome 会重建缓存,然后就可以工作了。

https://bugs.chromium.org/p/chromium/issues/detail?id=17855 https://bugs.chromium.org/p/chromium/issues/detail?id=273873

【讨论】:

    【解决方案2】:

    我的 Chrome cookie 中存储了一些东西:

    第一个 cookie :(已设置为过期)

    • 站点:dashboard.app.localhost
    • 值:访问令牌=123456;域=.app.localhost;路径=/;仅http; SameSite=严格

    第二个 cookie:(不应该存在的会话 cookie,我必须在 Chrome 设置中挖掘才能找到它)

    • 站点:dashboard.app.localhost
    • 值:访问令牌=无效;域=api.app.localhost;路径=/

    显然第二个 cookie 是由于我这边的错误而出现的。然而,Chrome 将它与第一个一起发送,创建了这个标题:

    Cookie:访问令牌=无效;访问令牌=123456

    我找到的解决方案:

    在 Chrome 设置中手动删除第二个 cookie。

    【讨论】:

      最近更新 更多