java – 删除servlet中的cookie的问题

前端之家收集整理的这篇文章主要介绍了java – 删除servlet中的cookie的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用此代码删除servlet中的cookie
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();

但是这没有效果,也没有改变cookie属性.@H_403_5@

我也尝试在这个servlet中添加一个cookie,这很好用.@H_403_5@

为什么我无法更改现有cookie的属性.@H_403_5@

解决方法

你不应该改变路径.这会改变cookie身份.如果为/ foo这样的路径设置了cookie并将其更改为/,则客户端将不再将更改的cookie与原始cookie相关联. Cookie由名称和路径标识.

将maxage设置为0应该足够了.@H_403_5@

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

您还需要确保在后续新请求中读取/测试cookie,而不是在当前请求中.@H_403_5@

猜你在找的Java相关文章