Java Servlet:Cookie不会被删除

时间:2013-11-27 01:58:45

标签: java servlets cookies

我遇到了从servlet代码中删除cookie的问题。鉴于贝娄是我的代码。

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

    for (Cookie curCookie : cookies) {          
        curCookie.setValue(null);
        curCookie.setMaxAge(0);
        curCookie.setPath("/");
        resp.addCookie(curCookie);          
    }
}

在此方法调用后,我执行resp.sendRedirect(url)。但是,并非所有cookie都被删除,例如,此cookie永远不会被删除。

Name:   reqURI
Content:    ../../webapp/index.jsp
Domain: mgt.appserver.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Tuesday, November 26, 2013 4:35:19 PM
Expires:    When the browsing session ends

有谁知道我在这里缺少什么?我阅读了Java Cookie对象文档,根据该值,0应该删除cookie。但事实并非如此。我尝试了更多的建议,但都没有。我尝试使用Google Chrome和Firefox,因此无法相信这是浏览器的问题。我不知道为什么这样的通用的东西没有用Java这样的语言正确记录和编译。

2 个答案:

答案 0 :(得分:7)

<强>更新

根据Problem removing cookie in servlet

当您在Java中检索cookie时,路径和域将始终为null,因为它们仅在客户端浏览器的响应中是必需的。但是,如果您位于同一安全域中(无论路径如何),您仍有权删除它们。不幸的是,因为没有包含路径,所以在不明确知道该路径的情况下,您无法立即删除cookie。只需使用相同的cookie名称,但不同的路径将不起作用。这些被认为是两个不同的cookie,您会发现不是删除cookie,而是在另一条路径上创建另一个。

因此,您不应更改值或路径,因为这会创建新的Cookie

答案 1 :(得分:0)

你在哪里重定向?响应必须首先提交给创建cookie的主机,以便将其删除。此外,您不需要将值设置为null。