如何删除 Java Servlet 中的 Cookie

2022-08-31 07:48:07

如何删除 Java servlet 中的 cookie?

我试过这个:http://www.jguru.com/faq/view.jsp?EID=42225

编辑:以下内容现在成功工作,它似乎是以下组合:

response.setContentType("text/html");

cookie.setMaxAge(0);

在我做之前:

//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);

根据文档,当浏览器关闭时这将使cookie过期。

负值表示 Cookie 不会永久存储,并在 Web 浏览器退出时被删除。零值会导致 Cookie 被删除。

使 Cookie 过期的完整工作代码段为:

//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);

答案 1

最大使用率 -1 表示您希望 Cookie 在会话期间持续存在。您希望改为将 MaxAge 设置为 0。

API 文档中:

负值表示 Cookie 不会永久存储,并在 Web 浏览器退出时被删除。零值会导致 Cookie 被删除。

答案 2

在我的环境中,以下代码有效。虽然乍一看是多余的,并且对于正确清除cookie是必要的。cookies[i].setValue("");cookies[i].setPath("/");

private void eraseCookie(HttpServletRequest req, HttpServletResponse resp) {
    Cookie[] cookies = req.getCookies();
    if (cookies != null)
        for (Cookie cookie : cookies) {
            cookie.setValue("");
            cookie.setPath("/");
            cookie.setMaxAge(0);
            resp.addCookie(cookie);
        }
}

推荐