[转]操作Cookie的另一个陷阱

  前些天,操作cookie时,遇到了点儿小问题,某个功能需要自动退出用户登陆状态,此时,清除 cookie的代码失效了,而用于提供用户手动退出功能的同一段代码,确工作正常。奇哉怪哉!
  ok,firefox,出列!让我们并肩作战,披荆斩棘,勇往直前,一往无前……
  地球人都知道,servlet的response对象只有addCookie方法,清除cookie是通过设定过期时间来完成的。不过,却很少有人知道,或者说,即便知道,也很少关心,cookie的path。
  通常,对于没有设定path的cookie,其默认值为设置该cookie的URL的path,例如,由http://www.fei2000.cn /java/sample.jsp页所设定的cookie,其path为/java/,该cookie对java及其子目录下的jsp页面均可见,对于其他目录下的页面则不可见。显然,由/java/sample.jsp和/sample/sample.jsp所设定的同名cookie,并不是同一个 cookie,他们互相不可见,互不干扰。
  由此,引出了此次事故的元凶,cookie并不是由name唯一确定的,而默认的path,随着操作cookie的页面URL不同而不同。由于子页面可以获取父页面设定的cookie,很容易造成一个错觉,这2个cookie是同一个!可惜,事与愿违。
子页面需要修改或者清除父页面设置的cookie时,需要显式的指定path,不然,只是发送了一个同名不同path的cookie而已。

  这个故事告诉我们,偷懒是不对滴,指定path才是好习惯!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值