Cookie getMaxAge

dca*_*555 11 java servlets

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

创建cookie:

Cookie securityCookie = new Cookie("sec", "somevalue");
securityCookie.setMaxAge(EXPIRATION_TIME);
Run Code Online (Sandbox Code Playgroud)

检索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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我总是年龄= -1

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

谢谢

Bru*_*ine 13

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

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

另请参阅中的"将Cookie发送到源服务器"部分 RFC中的.

  • 换句话说,浏览器不与您共享maxAge.你不了解.抱歉. (2认同)

小智 1

API 表示 -1 表示直到浏览器运行为止:

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

EXPIRATION_TIME 常量的值是多少?