【发布时间】:2013-01-01 17:45:28
【问题描述】:
如果我在未来设置一个带有 setMaxAge() 的 cookie,当我在后续请求中将 cookie 读回内存时,getMaxAge() 会返回 -1。我已经通过 Chrome 的设置和检查器检查了实际的 cookie,并且我可以验证过期日期确实设置为未来 60 天。
static public void setHttpCookie(HttpServletResponse response, String payload) {
Cookie c = new Cookie(COOKIE_NAME, payload);
c.setMaxAge(60*86400); // expire sixty days in the future
c.setPath("/"); // this cookie is good everywhere on the site
response.addCookie(c);
}
static public String checkForCookie(HttpServletRequest req) {
Cookie[] cookies = req.getCookies();
if ( cookies != null ) {
for ( Cookie c : cookies ) {
if ( COOKIE_NAME.equals(c.getName()) ) {
int maxAge = c.getMaxAge();
logger.debug("Read back cookie and it had maxAge of {}.", maxAge);
String payload = c.getValue();
return payload;
}
}
}
return null;
}
为什么 c.getMaxAge() 总是返回 -1?
【问题讨论】:
-
在使用它之前尝试为 setMaxAge 声明 long(只是尝试),因为如果 cookie 设置为在浏览器关闭时销毁(这意味着负数),它只会返回 -1必须放在 setMaxAge 中才能开始)。我不确定,因为我自己没有这样做,尽管这对我来说似乎是阅读 Java 文档时的样子。
-
@BalusC:如果你这么说,那只是一个建议:)
-
@HuiZheng 谢谢...我发誓我在发帖前搜索了 StackOverflow! :-)
标签: java http servlets cookies