问题场景
在测试项目退出功能的时候,发现退出之后,微服务框架所生成的cookie
依旧存在。导致进入首页的时候,没有异常跳转,反而正常进入。为了简单处理,使用了原生JS
进行cookie
的删除。但是执行之后,cookie
未正常被删除,cookie
依旧存在。本篇博客主要是讲述该情况发生的原因及解决方案。
问题环境
软件 | 版本 |
---|---|
JDK | 8 |
问题原因
打开谷歌浏览器的devtools页面,查看cookie
页面,可以发现里面有一个属性为HttpOnly
,这个属性主要是让网页代码中的js
无法获得相关信息,而服务器端可以正常获取。而要被删除的cookie
是被设置了HTTPONLY
属性,所以无法被JS进行控制和清除。如下图:
解决方案
既然服务器端可以正常操作,则在服务器端开发清除cookie
的接口,然后调用接口进行删除。删除代码如下:
public static void removeCookie(HttpServletResponse response, String name) {
Cookie uid = new Cookie(name, null);
uid.setPath("/");
uid.setMaxAge(0);
uid.setHttpOnly(true);
response.addCookie(uid);
}
结果
调用接口之后,顺利将cookie
进行删除。
总结
坑无处不在,需要多钻研思考!!!
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!