cookie注销的几种方法与注意事项

之前做一个单点登陆的,把生成的token字符串存放到cookie中。退出的时候要清理cookie信息。

清除cookie有如下几种方法

①javascript方法

<script type="text/javascript">
function delCookie(name) {
    var date = new Date();
    date.setTime(0);
    var str = name + "=" + encodeURIComponent('') + "; expires=" +     date.toGMTString()+"; path=/";
    document.cookie = str;
}
    delCookie('${tokenName}');
    window.location.href='${startReferer}';
</script>

②java方法

其一

Cookie cookies[] = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(cookiename)) {
                    cookie.setMaxAge(0);
                    cookie.setPath("/");
                    cookie.setDomain(domain);
                    response.addCookie(cookie);
                    break;
                }
            }
        }
其二
Cookie cookie = new Cookie(cookieame, null);
 cookie.setMaxAge(0); // 删除旧 cookie, 避免新 cookie 不生效
 cookie.setPath("/");
 response.addCookie(cookie);

清理cookie的常见问题:

问题一:清理cookie不成功/无法成功清理cookie

你在存cookie的时候,设置了哪些参数,如path,domain;那么你在清除的时候,同样必须设置这些参数。不然无法清理成功!

我就是存cookie的时候设置了domain,清理的时候没有设置。纠结了许久!

问题二:cookie保存的字符串中有时候会自动加上双引号

我就遇到了这样的问题,而且有双引号的时候不能客户那边不能解析,要求去掉双引号。

在cookie的version1和tomcat6以后,cookie中若存在一些特殊字符如/=?之类的,会自动给你加上双引号的。这是tomcat的的处理机制。

要强制避免双引号,可以cookie.setversion(2),不推荐!!没有这个版本,这不过是个漏洞。

或者设置tomcat的参数org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true。这个会造成一些其他的影响,详细见tomcat文档。

这些强制避免双引号的做法都是不正确的。没有老掉牙的http服务器都可以处理双引号的cookie。遇到这样子的问题,让客户他们自己去修改和处理!

关于cookie版本和双引号的问题,可以参考更详细的文章:

http://blog.csdn.net/joanna2008/article/details/5935105

转载于:https://my.oschina.net/suyewanwan/blog/83862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值