我遇到了从servlet代码中删除cookie的问题。鉴于贝娄是我的代码。
private void clearCookies(HttpServletRequest req, HttpServletResponse resp) {
Cookie[] cookies = req.getCookies();
for (Cookie curCookie : cookies) {
curCookie.setValue(null);
curCookie.setMaxAge(0);
curCookie.setPath("/");
resp.addCookie(curCookie);
}
}
在此方法调用后,我执行resp.sendRedirect(url)。但是,并非所有cookie都被删除,例如,此cookie永远不会被删除。
Name: reqURI
Content: ../../webapp/index.jsp
Domain: mgt.appserver.com
Path: /
Send for: Any kind of connection
Accessible to script: Yes
Created: Tuesday, November 26, 2013 4:35:19 PM
Expires: When the browsing session ends
有谁知道我在这里缺少什么?我阅读了Java Cookie对象文档,根据该值,0应该删除cookie。但事实并非如此。我尝试了更多的建议,但都没有。我尝试使用Google Chrome和Firefox,因此无法相信这是浏览器的问题。我不知道为什么这样的通用的东西没有用Java这样的语言正确记录和编译。
答案 0 :(得分:7)
<强>更新强>
根据Problem removing cookie in servlet
当您在Java中检索cookie时,路径和域将始终为null,因为它们仅在客户端浏览器的响应中是必需的。但是,如果您位于同一安全域中(无论路径如何),您仍有权删除它们。不幸的是,因为没有包含路径,所以在不明确知道该路径的情况下,您无法立即删除cookie。只需使用相同的cookie名称,但不同的路径将不起作用。这些被认为是两个不同的cookie,您会发现不是删除cookie,而是在另一条路径上创建另一个。
因此,您不应更改值或路径,因为这会创建新的Cookie
答案 1 :(得分:0)
你在哪里重定向?响应必须首先提交给创建cookie的主机,以便将其删除。此外,您不需要将值设置为null。