我是靠谱客的博主 单身小笼包,最近开发中收集的这篇文章主要介绍为什么删除Cookie的方法在IE上不再有效,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.问题是什么?
Cookie里面同一个domain的Ticket有两个,一个是null,另一个是有效值,导致当取到ticket为null的值时,验证ticket无效,无法登陆。

2.原因是什么?
升级Tomcat 8.5.6后,IE上删除Cookie的方法不再有效。试图通过SetMaxAge为0去删除Cookie,但是IE 并不认识MaxAge,之前的Tomcat版本可以帮忙解决这个问题,遇到MaxAge替换成IE认识的Expire,现在的tomcat版本却没有这个功能。

所以当代码检查ticket,发现Ticket无效后,Renew 一个新的ticket,删除无效的ticket,可是因为删除ticket的方法不起作用,导致两个ticket同时存在。
图片

以下是删除Cookie的方法:
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
String cookieName = “SampleCookieName”;
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName())) {
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}

3.解决方案是什么
可以用以下代码去解决:
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
String cookieName = “SampleCookie”;
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName())) {
StringBuilder cookieString = new StringBuilder(cookieHeaderName + “=” + “” + "; ");

cookieString.append(“Expires=0” + "; ");
cookieString.append("Version=0; ");
cookieString.append("Path=/; ");
cookieString.append(“Max-Age=0” + "; ");
//cookieString.append(“HttpOnly”);

response.addHeader(“Set-Cookie”, cookieString.toString());
}
}
}

但是如果代码里面这种用法太多,还是升级Tomcat比较好,新的Tomcat8.5.12已经Fix了这个问题。

最后

以上就是单身小笼包为你收集整理的为什么删除Cookie的方法在IE上不再有效的全部内容,希望文章能够帮你解决为什么删除Cookie的方法在IE上不再有效所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部