删除/删除cookie本身而不仅仅是值

时间:2016-12-16 07:39:42

标签: java servlets java-ee cookies

以下代码仅删除cookie值,但cookie本身仍为:

public static void expiryCookie(SlingHttpServletResponse response, 
                String cookieName, String cookieValue) {

            StringBuilder sb = new StringBuilder(cookieName);
            sb.append("=");
            sb.append(cookieValue);
            sb.append("0");
            sb.append("0");
            sb.append(";path=");
            sb.append("/");
            sb.append(";domain=");
            sb.append(".xyz.com");
            if(isSecureCookie()) {
                sb.append(";secure");
            }
            sb.append(";HttpOnly");
            response.addHeader("SET-COOKIE", sb.toString());

        }

或代码如:

curCookie.setValue(null);
    curCookie.setMaxAge(0);
    curCookie.setPath("/");

如何完全删除/删除cookie。这将阻止任何其他代码检查此cookie并设置新值。

2 个答案:

答案 0 :(得分:0)

通过添加;expires=1 Jan 1970 10:00:00将Cookie设置为过去的持久性。浏览器会将其删除

答案 1 :(得分:0)

设置maxAge = 0应该这样做。

public static void deleteCookie(HttpServletResponse httpResponse, String cookieName, String context) {
    Cookie cookie = new Cookie(cookieName, "");
    cookie.setMaxAge(0);
    cookie.setPath(context != null ? context : "/");
    httpResponse.addCookie(cookie);
}
来自Servlet 3.1 API文档的

Cookie#setMaxAge - Apache Tomcat 8.0.39

  

public void setMaxAge(int expiry)
  以秒为单位设置cookie的最大年龄。 ......零值   导致cookie被删除。