cookie的一些基本点:
java中获取的cookie来自于用户提交的HttpServletRequest信息,而cookie本身是保存在用户本地的,而我们写cookie的时候,又是使用HttpServletResponse来写cookie的。
我们经常删除cookie的时候发现删除的数据在第一次使用HttpServletRequest的时候还是能获取到,但是从第二次开始就获取不到了。这种奇怪的现象可能很多人都遇到过,也许有些人一辈子也没遇到过,因为这种现象只存在一个特定的场景,该场景如下:
1.用户发起请求
2.服务器获取到用户请求,获取cookie中的某个key值比如A
3.服务器使用HttpServletResponse删除该key值A
4.服务器使再次获取key值A,这时候发现key值A还是有数据的。
这样写场景的话大家基本就很明显的看到问题了,因为我们使用HttpServletResponse删除key值A,删除的是用户浏览器本地的key值A,但是本次用户发起的请求中的HttpServletRequest保存的cookie信息并没有变,还是删除前的cookie状态,所以导致第四步获取key值A仍旧可以获取到。这就是经常出现的明明删除了cookie但是第一次却仍有值的状态。
本文解析了Java中通过HttpServletResponse删除cookie的工作原理,并解释了一个常见现象:即删除cookie后,在当前会话请求中仍然可以获取到已删除的cookie值的原因。
2114

被折叠的 条评论
为什么被折叠?



