Java – the problem of deleting cookies in servlets

I try to use this code to delete cookies in the servlet

Cookie minIdCookie = null;

for (Cookie c : req.getCookies()) {
    if (c.getName().equals("iPlanetDirectoryPro")) {
        minIdCookie = c;
        break;
    }
}

if (minIdCookie != null) {
    minIdCookie.setMaxAge(0);
    minIdCookie.setValue("");
    minIdCookie.setPath("/");
    res.addCookie(minIdCookie);
}

res.flushBuffer();

But this has no effect and does not change the cookie properties

I also try to add a cookie to this servlet, which works well

Why can't I change the properties of an existing cookie

Solution

You shouldn't change the path This will change the cookie identity If a cookie is set for a path such as / Foo and changed to /, the client will no longer associate the changed cookie with the original cookie Cookies are identified by name and path

Setting maxage to 0 should be sufficient

Cookie[] cookies = request.getCookies();
if (cookies != null) { // Yes,this can return null! The for loop would otherwise throw NPE.
    for (Cookie cookie : cookies) {
        if (cookie.getName().equals("iPlanetDirectoryPro")) {
            cookie.setMaxAge(0);
            response.addCookie(cookie);
            break;
        }
    }
}

You also need to ensure that cookies are read / tested in subsequent new requests, not in the current request

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>