Java 在HTTPServlet doPost()中将maxage(0)设置为cookie并重定向不会';行不通

Java 在HTTPServlet doPost()中将maxage(0)设置为cookie并重定向不会';行不通,java,http,cookies,Java,Http,Cookies,我正在做一件很简单的事情,但就是不起作用 我有一个带有按钮的html页面,该按钮用于注销和删除登录cookie,按下时,它/在servlet中运行以下代码: @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { deleteCookie(req, resp); resp.sen

我正在做一件很简单的事情,但就是不起作用

我有一个带有按钮的html页面,该按钮用于注销和删除登录cookie,按下时,它/在servlet中运行以下代码:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
        IOException {
    deleteCookie(req, resp);

    resp.sendRedirect("login");

}

private void deleteCookie(HttpServletRequest req, HttpServletResponse resp) {
    Cookie[] cookies = req.getCookies();

    if (cookies != null) {
        for (Cookie cookie : cookies) {

            if (CID_KEY_NAME.equals(cookie.getName())) {
                cookie.setMaxAge(0); // Should make the browser delete the cookie
                cookie.setValue(null);
                resp.addCookie(cookie);

            }
        }
    }
}
sendRedirect(“login”)
将我发送到一个负责登录的新servlet,但是当我到达新servlet并检查上面的cookie是否存在时,我可以看到它的最大值为-1

我做错什么了吗?

根据,至少Internet Explorer 6、7和8不支持
最大年龄
,但支持
过期
。如果这是您的问题,那么我会尝试将这两个设置为:

Q.如果我在cookie中同时设置expires和max age怎么办?

答:每个支持最长使用期限的浏览器都会忽略过期日期,不管其值如何,同样,Internet Explorer也会忽略最长使用期限,而只使用过期日期

该页面还有一个指向的链接,您可能会发现该链接很有用。

根据,至少Internet Explorer 6、7和8不支持
最大年龄
,但支持
过期
。如果这是您的问题,那么我会尝试将这两个设置为:

Q.如果我在cookie中同时设置expires和max age怎么办?

答:每个支持最长使用期限的浏览器都会忽略过期日期,不管其值如何,同样,Internet Explorer也会忽略最长使用期限,而只使用过期日期


该页面还有一个指向的链接,您可能会发现该链接很有用。

IE的解决方案是,我应该为设置cookie和删除cookie设置路径


Chrome没有路径也可以。

IE的解决方案是,我应该为设置cookie和删除cookie设置路径


Chrome没有路径也可以。

谢谢您提供的信息。我无法验证它,因为我不知道如何在Javacookie(javax.servlet.http.Cookie)中定义“expire”选项。您可以使用LiveHTTP头、Firebug的网络面板等工具(在Firefox中)获取整个http交换。虽然这不会帮助您设置值,但它会告诉您正在交换哪些确切的cookie值,这可能会提供出问题的线索。关于Expires标记,您是对的,但我发现了真正的问题,那就是我没有设置路径。我想Java知道自己设置正确的属性,谢谢您提供的信息。我无法验证它,因为我不知道如何在Javacookie(javax.servlet.http.Cookie)中定义“expire”选项。您可以使用LiveHTTP头、Firebug的网络面板等工具(在Firefox中)获取整个http交换。虽然这不会帮助您设置值,但它会告诉您正在交换哪些确切的cookie值,这可能会提供出问题的线索。关于Expires标记,您是对的,但我发现了真正的问题,那就是我没有设置路径。我想Java知道如何设置正确的属性本身