我有以下代码尝试从浏览器中删除一些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中的这些会话cookie失效?
这是在运行Java 7的Tomcat上的Spring MVC应用程序中运行
答案 0 :(得分:1)
Cookie完全搞砸了。
服务器的最佳做法:
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
我建议你做什么:
cookie.setVersion(0);
如果仍然没有运气,请忘记Cookie
课程,尝试手动设置http标头
response.addHeader("Set-Cookie",
"JSESSIONID=NO_DATA; Path=/App1/; Domain=myDomain.com; Expires=Thu, 01 Jan 1970 00:00:00 GMT");
答案 1 :(得分:0)
This SO question表示解决方案可能是致电setHttpOnly(true)
。