Chrome发送了重复的Cookie

4
我正在开发一个Spring MVC应用程序,发现只有在Chrome上才会出现奇怪的问题。逻辑如下:
1. 用户请求项目列表 2. 用户点击“新增”按钮,弹出Bootstrap对话框,允许用户输入名称。 3. 提交后,向服务器发送一个POST请求。 4. 服务器创建一个新项目并将其保存到数据库中。 5. 服务器将新项目ID存储到cookie中,并向浏览器发送重定向响应。 6. 浏览器请求项目视图页面。 7. 服务器从cookie中取出项目ID并呈现页面。
以上逻辑在几乎所有浏览器上都运行良好(我没有在IE上测试),除了Chrome。我发现根本原因是Chrome会将先前的cookie与不同的项目ID一起存储,并在第6步时向服务器发送重复的项目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)]

那么,你解决了这个问题吗?我也遇到了完全相同的问题。 - Vitali Carbivnicii
不,我的做法是忽略所有之前的 cookie 并处理最后一个。 - Gelin Luo
我明白了,这在我的情况下不是一个选项。但是我将cookie名称从JSESSIONID更改为SESSIONID,它神奇地开始工作了,我不知道它修复了什么和在哪里修复了。 - Vitali Carbivnicii
2个回答

1

0

我在Chrome的cookies中存储了类似于以下内容:

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

  • 网站:dashboard.app.localhost
  • 值:access-token=123456; Domain=.app.localhost; Path=/; HttpOnly; SameSite=Strict

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

  • 网站:dashboard.app.localhost
  • 值:access-token=invalid; Domain=api.app.localhost; Path=/

显然,第二个cookie是由于我的错误而出现的。但是,Chrome将其与第一个cookie一起发送,从而创建了此标头:

Cookie: access-token=invalid; access-token=123456

我找到的解决方案:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接