如何删除Java servlet中的cookie?
我试过了:http://www.jguru.com/faq/view.jsp?EID=42225
编辑:下面的代码现在可以正常工作了,它看起来像是以下命令的组合:
response.setContentType("text/html");和
cookie.setMaxAge(0);在我这样做之前:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);其在根据the documentation关闭浏览器时使cookie期满。
cookie负值表示
不会永久存储,并将在浏览器退出时删除。零值将导致删除cookie。
使cookie过期的完整工作代码片段为:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);发布于 2009-05-21 01:36:37
-1的MaxAge表示您希望cookie在会话期间持续存在。您希望将MaxAge设置为0。
cookie负值表示
不会永久存储,并将在浏览器退出时删除。零值将导致删除cookie。
发布于 2012-06-29 16:51:58
在我的环境中,以下代码可以正常工作。虽然乍一看看起来是多余的,但cookies[i].setValue("");和cookies[i].setPath("/");是正确清除cookie所必需的。
private void eraseCookie(HttpServletRequest req, HttpServletResponse resp) {
Cookie[] cookies = req.getCookies();
if (cookies != null)
for (Cookie cookie : cookies) {
cookie.setValue("");
cookie.setPath("/");
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}发布于 2009-05-21 01:33:45
请记住,cookie实际上是由其名称、路径和域的元组定义的。如果这三个中的任何一个是不同的,或者有多个同名的cookie,但定义的路径/域对于有问题的URL仍然可见,您仍然会看到该cookie在请求中传递。例如,如果url是"http://foo.bar.com/baz/index.html",您将看到在bar.com或foo.bar.com上定义的任何cookie,或者路径为"/“或"/baz”的cookie。
因此,只要客户端中只定义了一个cookie,名称为"SSO_COOKIE_NAME",域为"SSO_DOMAIN",路径为"/“,那么您所拥有的cookie看起来应该可以工作。如果有任何cookie具有不同的路径或域,您仍然会看到发送到客户端的cookie。
要对此进行调试,请进入火狐的首选项cookie安全选项卡,并使用SSO_COOKIE_NAME搜索所有->。单击每个以查看域和路径。我敢打赌,你会在那里找到一个不完全是你所期望的。
https://stackoverflow.com/questions/890935
复制相似问题