【问题标题】:Cookie values are coming up as cookie name in Java Spring?Cookie 值在 Java Spring 中作为 cookie 名称出现?
【发布时间】:2012-02-06 17:45:39
【问题描述】:

我一直想知道为什么我的应用程序允许重复投票有一段时间了,最​​后调试了这个问题。

当您投票时,您会得到一个名为“vote”的 cookie,其值是您投票的“事物”的 ID。

Cookie voteCookie = new Cookie("vote", "1901");
voteCookie.setMaxAge(60*60*24*365);
response.addCookie(voteCookie);

我检查了客户端(Chrome),有一个名为“vote”的cookie,其值为“1901”

当我像这样在我的 Spring 控制器中读取这个 cookie 时:

Cookie[] cookies = request.getCookies();

我现在有两个 cookie:

CookieName: ["vote"] Value: [""]
CookieName: ["1901"] Value: [""]

JSESSIONID 等其他 cookie 正确:

 CookieName: ["JSESSIONID"] Value: [000046KQaPe3T8gwXVuB3zhNrON:-1]

我做错了什么?

编辑:原来有一些代码将旧值附加到新值:

voteCookie.setValue(voteCookie.getValue() + "," + cookieValue);

这似乎是导致问题的原因。 “,”(逗号)之后的值成为另一个具有该名称的 cookie。我不确定这是 WebSphere Application Server 问题还是什么。但是将分隔符更改为“-”,一切正常!

【问题讨论】:

  • 我觉得它比new Cookie("vote", "1901"); 更多。你能发布调用这个构造函数的实际代码吗?
  • 以及枚举cookies的代码。
  • 看起来cookie正在被添加到响应中,所以不是它......
  • @adarsh 你是对的,有一些代码将旧值附加到新值中。我会更新问题

标签: java spring cookies


【解决方案1】:

似乎问题是由于 cookie 值中的逗号引起的。在这个问题中有一些对 javadoc 的引用:Cannot get value from cookie in Java. Value contains colons

我把分隔符改成了“-”,一切都很好

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2013-05-20
    • 1970-01-01
    • 2021-02-25
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多