如何删除 Java Servlet 中的 Cookie

新手上路,请多包涵

如何删除 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);

原文由 Dougnukem 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 582
2 个回答

MaxAge 为 -1 表示您希望 cookie 在会话期间持续存在。您想要将 MaxAge 设置为 0。

来自 API 文档

负值意味着 cookie 不会持久存储,并且会在 Web 浏览器退出时被删除。零值会导致 cookie 被删除。

原文由 cjs 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 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);
        }
}

原文由 wu liang 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题