这是我设置新cookie 的代码
Cookie citizen = new Cookie("citizen",email);
citizen.setMaxAge(3600);
response.addCookie(citizen);
现在我用这个代码来破坏cookie
Cookie[] cookies = request.getCookies();
for(int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("citizen")) {
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
}
但是,我仍然得到饼干的价值。我们将不胜感激!!
下面的链接可能会对您有所帮助。。
如何从cookie中删除信息?
祝你好运!!!
如果有任何进一步的疑问,请告诉我。。。
我遇到了类似的问题,即使在将最大年龄设置为0并将值设置为"后,cookie仍保留了该值。
我使用firefox查看cookie属性以帮助调试。登录时,servlet调用我的cookie类来设置cookie,cookie路径为"/javawork/"。注销时,JSP页面调用相同的cookie类,通过将最大年龄设置为0来"删除"cookie。但是JSP页面在web应用程序的子文件夹中,所以当我创建一个最大年龄为0的同名cookie时,它创建了一个路径为"/javawork/test_login/"的新cookie。
因此,"新"cookie立即过期,但原来的cookie仍然存在。在我的删除cookie功能中,我需要将"新"cookie的路径设置为"/javawork/",当我将最大年龄设置为0并添加它时,它会更新原始cookie并让我正确注销。
我希望这能有所帮助。
正确的选项是
Cookie cookie = new Cookie("citizen", "citizen");
cookie.setMaxAge(0);
cookie.setValue("");
response.addCookie(cookie);
如果您尝试从请求中获取cookie,然后使用setMaxAge(0)将其添加到响应中,您可以看到cookie没有被删除。
尝试添加此行:
cookies[i].setMaxAge(0);
//add this line
cookies[i].setPath("/");
response.addCookie(cookies[i]);
这对我有效-
Cookie UIDCookie = new Cookie(COOKIE_KEY, "");
UIDCookie.setMaxAge(0);
UIDCookie.setPath("/");
response.addCookie(qptUIDCookie);
我们可以通过将最大年龄设置为零来删除cookie。例如:
Cookie[] cookies = request.getCookies();
cookies[0].setMaxAge(0);
response.addCookie(cookies[0]);
这里我们只删除第一个cookie