最近在整理系统登出时,需要清理掉 sso 的 cookie,于是上网搜出了标准的 js 删除 cookie 代码:
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = ' ssosessionid=a; expires=' + date.toGMTString()+
该代码清除 cookie 的原理就是将 cookie 的值的到期时间设置为过去的时间,这样浏览器就是自动清除了。
但是诡异的事情发生了,无论我怎么调试,该 session 值无法删除,设置设置 cookie 的时候,可以出现两个 key 为 ssosessionid 的 cookie。
此时分析只有一种可能, key 不一样 ,但经过仔细排查,key 值是样的,于是上网搜索,找到解决方案。
在浏览器中,cookie 的存储信息除了 key=value 之外,还可以跟其他附加信息,如下:
expires: 过期时间
domain: 域名
path: 路径
secure: 安全,http 和 https
其中,key,domain,path 共同组成了复合主键,而代码
document.cookie
只会显示 key 值,如要查看 cookie 的完整信息,可以再 chrome 开发者工具的 application/sotrage/cookies 进行查看
所以要想删除对应的 cookie,需要确认三个复合主键,需改后的删除 js 如下:
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = ' ssosessionid=a; domain=www.xxx.com;path=/;expires=' + date.toGMTString()+
在处理玩问题后,顺便了解和复习了下 cookie 的前世今生,参考此篇:http://bubkoo.com/2014/04/21/http-cookies-explained/
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于