我无法检索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到期时,我看到了奇怪的日期。
THX
答案 0 :(得分:12)
当浏览器将cookie发送回原始服务器时,它不包含任何年龄。因此,上面的“检索”代码没有收到最大年龄是合乎逻辑的:它不包含在请求中。
当从服务器收到cookie时,浏览器使用max age参数来确定cookie应保留多长时间;年龄永远不会传回服务器,过期的cookie就会被丢弃。处理请求时,如果要续订cookie的年龄,请在响应中重新包含cookie。
另请参阅RFC。
中的“向原始服务器发送Cookie”部分答案 1 :(得分:1)
API表示-1表示浏览器正在运行:
返回cookie的最大年龄,以秒为单位指定。默认情况下,-1表示cookie将持续存在直到浏览器关闭
EXPIRATION_TIME常数的值是多少?
答案 2 :(得分:0)
浏览器可以修改该值。
您创建了一个Cookie并想要设置最大年龄。 cookie被发送到浏览器。浏览器可以拒绝cookie或忽略其策略的最大年龄。此修改后的cookie将发送回您的应用程序。
检查您的浏览器设置。
答案 3 :(得分:0)
只是为了笑容,你能用浏览器从浏览器中检索cookie的价值吗?
另外,你可以在servlet / jsp之前放一个过滤器,这样你可以在servlet / jsp设置之后检查cookie的值吗?