Cookie在请求转发和重回向中的删除问题分析

在做项目的时候突然出现一个问题,当我们在一个请求转发的过程中想要将cookie给清楚掉,然后再转发到jsp网页上进行cookie的判断,但是我们根据最后的结果我们不能通过修改cookie的存在事件而去实现我们的功能,只有在刷新过一次之后,功能才可以实现,这是为什么呢?

首先我们要知道的是cookie是由浏览器携带的,然后访问服务端的时候将cookie给传递到服务端上去,所以我们在进行转发的时候,从浏览器端出发的cookie虽然在自己编写的servlet中用代码设置了cookie的寿命,然后我们在addCookie的时候是将cookie给返回给浏览器,但是在请求转发的过程之中我们的request和response是在服务端内部运行的(也就是通过自己写的servlet在服务端的内部给跳转到我们最终要去的网页),所以我们的cookie始终都是最开始从浏览器中传出的cookie,在中间层时(自己写的servlet)中对cookie寿命的操作,必须在转发之后浏览器得到服务端传出的cookie

所以第一次跳转到指定页面中进行cookie判断,cookie是存在的,但是进行刷新或者第二次操作的时候cookie就会消失了

这个其实是比较好理解的,但是今天我在请求转发的之前,我不仅用了cookie的setMaxage方法,然后还把特定的cookie中的value值给设为了null,然后在前端进行了验证之后,在控制台打印了cookie的长度,依然是最开始的长度,所以关于cookie寿命在servlet中的修改没有生效,但是打印之前将指定的cookie设置为null的cookie的值时,打印出来的竟然是为null。

所以我们大胆得出的结论是在转发的途中cookie寿命的设置必须返还给客户端或浏览器时再次加载时才会生效,但是指定cookie值的设置好像不受请求转发的影响。但是为什么呢?

这个问题的原理我现在也不是很明白,希望有大佬可以指点一下,作者是一个萌新,不对的地方请多多谅解。前端模板用layuimini

posted @ 2020-09-16 11:12  friendA112  阅读(162)  评论(0)    收藏  举报