2012-01-10 68 views
2

我一直在想,爲什麼我的應用程序已經允許重複投票一段時間,並最終調試了這個問題。Cookie值在Java Spring中成爲cookie名稱?

當您投票時,您會得到一個名爲「vote」的cookie,該值是您投票的「thing」的ID。

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

我檢查了客戶端(瀏覽器),並有一個名爲cookie的「投票」,其值爲「1901」

當我再讀取這個cookie在我的春節控制器是這樣的:

Cookie[] cookies = request.getCookies(); 

我現在有兩個餅乾:

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

其他餅乾一樣JSESSIONID是正確的:

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

我在做什麼錯?

編輯:原來有一些代碼,用新追加的舊值:

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

,這似乎是問題的根源。 「,」(逗號)之後的值成爲具有該名稱的另一個cookie。我不確定這是一個WebSphere Application Server問題還是什麼。但將分隔符更改爲「 - 」,一切正常!

+1

我覺得有更多的比'新的Cookie(「投票」,「1901」) ;'。你能發佈調用這個構造函數的實際代碼嗎? – adarshr 2012-01-10 09:49:07

+0

以及枚舉cookie的代碼。 – adarshr 2012-01-10 09:50:51

+0

看起來cookie正被添加到響應中,所以不是這樣... – 2012-01-10 09:51:18

回答