我们已经存在已创建的Cookie,但它们没有任何到期日期,因此他们使用30分钟的默认时间到期。我只是想让它们在2分钟内到期,如下设置最大年龄。
Cookie sessionCookie = new Cookie("sessioncookie", "345rfhthjii");
sessionCookie.setPath("/");
sessionCookie.setSecure(true);
sessionCookie.setMaxAge(120);
response.addCookie(sessionCookie);
上面的代码不起作用,所以我浏览了与此会话过期相关的其他帖子,但每个解决方案都说明了需要在jsp页面中设置的日期/时间。
我们不能在servlet本身做任何事情吗?
答案 0 :(得分:1)
方法setMaxAge(int)
以秒为单位设置cookie的到期时间,因此代码为:
sessionCookie.setMaxAge(120);
应正确创建一个在2分钟后过期的cookie。
我会检查以确保您正在清除之前的Cookie,因为您的语法正确并且您应该遇到您所描述的预期行为。
答案 1 :(得分:0)
我在Firefox中测试了你的代码。存储cookie的方式是正确的,你是对的。当cookie过期时,Firefox不会立即将其删除。
正如您所见,test
Cookie已过期,但仍存在于Firefox的Cookie列表中。 但您无法通过Javascript访问此Cookie,并且浏览器也不会将此Cookie发送到服务器。您可以在servlet中使用此命令对其进行测试:
Cookie[] cookies = req.getCookies();
显然这是更新cookie列表的浏览器策略。