Java 小服务程序 : Cookies do not get deleted

标签 java servlets cookies

我在从我的 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 这样的语言正确地记录和完成。

最佳答案

更新

根据 Problem removing cookie in servlet

当您在 Java 中检索 cookie 时,路径和域将始终为 null,因为它们仅在客户端浏览器的响应中是必需的。但是,如果您在同一个安全域中(无论路径如何),您仍然有权删除它们。不幸的是,因为没有包含该路径,您现在不能在不明确知道该路径的情况下删除 cookie。简单地使用相同的 cookie 名称,但使用不同的路径是行不通的。这些被认为是两个不同的 cookie,您会发现您没有删除 cookie,而是在不同的路径上创建了另一个 cookie。

所以你不应该改变值或路径,因为这会创建一个新的 cookie

关于Java 小服务程序 : Cookies do not get deleted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20231556/

相关文章:

java - Jenkins 运行自动化测试时出错

java - Swing 和线程

java - 如何从 Java EE 应用程序提供套接字服务?

java - 如何在 JSP 中访问 WEB-INF 中的文件?

php - Curl - 获取 JSESSIONID

java - 获取十进制数正则表达式

java - Tomcat Servlet 返回错误 405 - 此 URL 不支持 HTTP 方法 POST

java - Servlet session 属性的多态性

ruby-on-rails-3 - Rspec cookies.permanent,未定义方法

Angular 8 - 使用 CookieService 清除 cookie