Cookie getMaxAge

我无法检索cookie maxage它总是返回-1

创建cookie:

Cookie securityCookie = new Cookie("sec", "somevalue"); securityCookie.setMaxAge(EXPIRATION_TIME); 

检索cookie:

 Cookie[] cookies = request.getCookies(); if (cookies != null) { for(int i=0; i<cookies.length; i++) { Cookie cookie = cookies[i]; if ("sec".equals(cookie.getName())){ int age = cookie.getMaxAge(); } } } 

我总是年龄= -1

当我检查firefox cookie到期时,我看到奇怪的日期。

谢谢

当浏览器将cookie发送回原始服务器时,它不包含任何年龄。 因此,上面的“检索”代码没有收到最大年龄是合乎逻辑的:它不包含在请求中。

当从服务器收到cookie时,浏览器使用max age参数来确定cookie应保留多长时间; 年龄永远不会传回服务器,过期的cookie就会被丢弃。 处理请求时,如果要续订cookie的年龄,请在响应中重新包含cookie。

另请参阅RFC中的 “将Cookie发送到源服务器”部分。

API表示-1表示浏览器运行之前:

返回cookie的最大年龄,以秒为单位指定。默认情况下,-1表示cookie将持续存在直到浏览器关闭

EXPIRATION_TIME常量的值是多少?

该值可以由浏览器修改。

您创建一个cookie并想要设置最大年龄。 cookie被发送到浏览器。 浏览器可以拒绝cookie或忽略其策略的最大年龄。 此修改后的cookie将发送回您的应用程序。

检查您的浏览器设置。

只是为了笑容,你能用浏览器从浏览器中检索cookie的价值吗?

另外,您可以在servlet / jsp之前放置一个filter,以便在servlet / jsp设置之后检查cookie的值吗?