簡體   English   中英

與Cookie.setMaxAge(Integer.MAX_VALUE)有什么關系?

[英]what's the deal with Cookie.setMaxAge(Integer.MAX_VALUE)?

setMaxAge應該控制cookie的最大年齡,所以如果我的意圖是按字面設置可能的最大年齡,邏輯事物將會做:

cookie.setMaxAge(Integer.MAX_VALUE);

然而,這導致cookie HTTP頭中沒有Expires ,我在WebSphere 7上測試它。將它設置為1秒測量的工作正常。

為什么會這樣?

PS剛剛在Tomcat7上測試過 - Integer.MAX_VALUE導致Max-Age=2147483647; Expires=Wed, 06-Mar-2080 21:30:32 GMT Max-Age=2147483647; Expires=Wed, 06-Mar-2080 21:30:32 GMT ,所以它必定是WebSphere的錯誤。

問題在http://www-01.ibm.com/support/docview.wss?uid=swg1PM34869中描述。 原因是一種千年問題:WAS7將cookies日期寫為YY,WAS6為YYYY

此setMaxAge方法不是設置cookie的最大年齡,而是將int參數seconds添加到當前SERVER日期/時間,並將此新的日期/時間值作為其到期時間放入cookie。 稍后,當此cookie發送到瀏覽器時,此過期日期將與CLIENT日期/時間進行比較,如果過期日期已過,則cookie將過期。

所以不要使用setMaxAge(int)使用方法與日期和時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM