如果我在将来设置一个带有 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?