Chrome发送了重复的Cookie

时间:2013-12-26 21:33:25

标签: google-chrome spring-mvc servlets cookies

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

  1. 用户请求项目列表
  2. 用户点击添加新按钮,弹出的引导对话框允许用户输入名称
  3. 提交,发送到服务器的发布请求
  4. server创建一个新项并将其保存到db
  5. 服务器将新项目ID存储到cookie并向浏览器发送重定向响应
  6. 浏览器请求项视图页
  7. 服务器从cookie中获取项目ID并呈现页面
  8. 上述逻辑在几乎所有浏览器上运行良好(我没有在IE上测试),除了chrome。我发现根本原因是chrome将使用不同的商品ID存储以前的Cookie,并且在步骤6 chrome将重复的商品ID Cookie发送到服务器。

    知道如何解决此问题吗?

    Chrome [版本32.0.1700.41 m Aura] enter image description here

    Opera [Version 20.0.1353.0] enter image description here

    Firefox [版本29.0a1(2013-12-10)] enter image description here

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

2 个答案:

答案 0 :(得分:0)

重新启动Chrome!

在某些时候(即使今天这件事发生在我身上)Chrome对于域内存在的cookie与磁盘缓存的内容感到困惑。这种混淆导致添加cookie但不能从我所知道的内容中删除。在我的情况下,我怀疑McAfee锁定文件以进行扫描。重新启动Chrome会重建缓存然后正常运行。

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

答案 1 :(得分:0)

我在Chrome cookie中存储了一些相关内容:

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

  • 站点:dashboard.app.localhost
  • 值: access-token = 123456; Domain = .app.localhost ;路径= /; HttpOnly; SameSite =严格

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

  • 站点:dashboard.app.localhost
  • 值: access-token =无效; Domain = api.app.localhost ;路径= /

很明显,第二个cookie是由于我这一边的错误而出现的。但是,Chrome将它发送给第一个,并创建了这个标头:

Cookie:access-token =无效; access-token = 123456

我找到的解决方案:

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