我尝试使用此代码删除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();
我也尝试在这个servlet中添加一个cookie,这很好用.
为什么我无法更改现有cookie的属性.
解决方法
你不应该改变路径.这会改变cookie身份.如果为/ foo这样的路径设置了cookie并将其更改为/,则客户端将不再将更改的cookie与原始cookie相关联. Cookie由名称和路径标识.
将maxage设置为0应该足够了.
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,而不是在当前请求中.