繁体   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