我一直想知道为什么我的应用程序暂时允许重复投票,最后调试了问题。
当您投票时,您会获得一个名为“投票”的cookie,该值是您投票的“事物”的ID。
Cookie voteCookie = new Cookie("vote", "1901");
voteCookie.setMaxAge(60*60*24*365);
response.addCookie(voteCookie);
我检查了客户端(Chrome),并且有一个名为“vote”的cookie,其值为“1901”
然后我在Spring Controller中读取这个cookie,如下所示:
Cookie[] cookies = request.getCookies();
我现在有两个饼干:
CookieName: ["vote"] Value: [""]
CookieName: ["1901"] Value: [""]
像JSESSIONID这样的其他cookie是正确的:
CookieName: ["JSESSIONID"] Value: [000046KQaPe3T8gwXVuB3zhNrON:-1]
我做错了什么?
编辑:原来有一些代码用旧的值附加旧值:
voteCookie.setValue(voteCookie.getValue() + "," + cookieValue);
这似乎是造成这个问题的原因。 “,”(逗号)之后的值成为另一个具有该名称的cookie。我不确定这是否是WebSphere Application Server问题或者是什么。但是将分隔符更改为“ - ”,一切正常!
答案 0 :(得分:1)
似乎问题是由于cookie的值中的逗号。在这个问题中有一些对javadoc的引用:Cannot get value from cookie in Java. Value contains colons
我将分隔符更改为“ - ”并且一切都很好