Java cookie 在 Firefox 中被删除,但在 Google 或 IE 中未被删除

标签 java internet-explorer google-chrome spring-mvc session-cookies

我有以下代码试图从我的浏览器中删除一些 JSESSIONID cookie。

String[] cookieList = "/App1/,/App2/,/App3/".split(",");



for (int i = 0; i < cookieList.length; i++) {

     String cookiePathString = cookieList[i];
     response.setContentType("text/html");
     Cookie cookieToKill = new Cookie("JSESSIONID", "No Data");
     cookieToKill.setDomain(getCookieDomainName("myDomain.com"));
     cookieToKill.setMaxAge(0);
     cookieToKill.setPath(cookiePathString);
     cookieToKill.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
     response.addCookie(cookieToKill);
}

该代码在 Firefox 中运行良好,并删除了 JSESSIONID。在 Chrome 和 IE 中则不然。您需要做什么才能使 IE 和 Chrome 的这些 session cookie 过期?

它在运行 Java 7 的 Tomcat 上的 Spring MVC 应用程序中运行

最佳答案

Cookie 完全搞砸了。

服务器的最佳实践:

  1. 使用 Set-Cookie,而不是 Set-Cookie2。
  2. 如果有多个 Cookie,请为每个 Cookie 使用单独的 Set-Cookie header 。
  3. 使用 Expires,而不是 Max-Age。
  4. 使用日期格式:Sun, 06 Nov 1994 08:49:37 GMT

例如:

Set-Cookie: JSESSIONID=NO_DATA; Path=/App1/; Domain=myDomain.com; Expires=Thu, 01 Jan 1970 00:00:00 GMT

我可以建议你做什么:

  1. Cookie 值中不要有空格。
  2. 调用cookie.setVersion(0);

如果仍然不行,请忘记Cookie类,尝试手动设置http header

response.addHeader("Set-Cookie", 
    "JSESSIONID=NO_DATA; Path=/App1/; Domain=myDomain.com; Expires=Thu, 01 Jan 1970 00:00:00 GMT");

关于Java cookie 在 Firefox 中被删除,但在 Google 或 IE 中未被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869060/

相关文章:

java - android:<supports-screens> 标签

javascript - Window.open 在 Internet Explorer 中不起作用

google-chrome - 通过脚本在 Chrome 上设置默认搜索提供程序

jquery - Chrome 打印预览失败,带有 jQ​​uery 打印按钮

javascript - console.log 不适用于 jQuery?

Java:根据用户定义的XSD编写XML

java - 我们真的需要类来实现 Java 中的多态性吗?

java - Java 和 .NET 之间的桥梁

Java - 使用 Java Desktop 在 Internet Explorer 中打开 URL

internet-explorer - 如何在IE开发人员工具中以交互方式删除选定的HTML元素?