Cookie getMaxAge

时间:2008-10-07 09:07:02

标签: java servlets

我无法检索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

4 个答案:

答案 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的值吗?