Java Cookie getMaxAge

Java Cookie getMaxAge,java,servlets,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;

我无法检索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();
        }
    }
}
Cookie[]cookies=request.getCookies();
如果(cookies!=null){

对于(int i=0;iAPI说-1表示直到浏览器运行:

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


过期时间常数的值是多少?

浏览器可以修改该值

您创建了一个cookie,并希望设置一个最长期限。cookie将发送到浏览器。浏览器可能会拒绝cookie,或者忽略其策略中过长的最长期限。此修改后的cookie将发送回您的应用程序


请检查您的浏览器设置。

仅对于GRIN,您可以使用javascript从浏览器中检索cookie的值吗


另外,您是否可以在servlet/jsp之前放置一个过滤器,以便在servlet/jsp设置cookie后检查cookie的值?

当浏览器将cookie发送回源服务器时,它不包括任何年龄。因此,逻辑上,上面的“检索”代码不接收最大年龄:它不包括在请求中

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


另请参阅“向源服务器发送cookie”一节在.

中,换句话说,浏览器没有与您共享最大年龄。您不知道。对不起,您是如何解决此问题的?我正在努力解决完全相同的问题,我没有看到任何答案。@Bruno De Fraine的答案是有效的,请阅读下面的线程,您仅在创建cookie时使用cookie age参数要在响应对象中发送的cookie。API指的是创建cookie。同样的“cookie”对象也用于封装请求中的数据,但请求不发送任何“年龄”参数。太糟糕了,SET和GET没有不同的对象(用于并行不同的HTTP标头cookie:和SET cookie)。