Cookie过期无效

时间:2014-12-26 05:17:30

标签: servlets cookies expired-cookies

我们已经存在已创建的Cookie,但它们没有任何到期日期,因此他们使用30分钟的默认时间到期。我只是想让它们在2分钟内到期,如下设置最大年龄。

Cookie sessionCookie = new Cookie("sessioncookie", "345rfhthjii");
sessionCookie.setPath("/");
sessionCookie.setSecure(true);
sessionCookie.setMaxAge(120);
response.addCookie(sessionCookie);

上面的代码不起作用,所以我浏览了与此会话过期相关的其他帖子,但每个解决方案都说明了需要在jsp页面中设置的日期/时间。

我们不能在servlet本身做任何事情吗?

2 个答案:

答案 0 :(得分:1)

方法setMaxAge(int)以秒为单位设置cookie的到期时间,因此代码为:

sessionCookie.setMaxAge(120);

应正确创建一个在2分钟后过期的cookie。

我会检查以确保您正在清除之前的Cookie,因为您的语法正确并且您应该遇到您所描述的预期行为。

答案 1 :(得分:0)

我在Firefox中测试了你的代码。存储cookie的方式是正确的,你是对的。当cookie过期时,Firefox不会立即将其删除。

Test cookie

正如您所见,test Cookie已过期,但仍存在于Firefox的Cookie列表中。 您无法通过Javascript访问此Cookie,并且浏览器也不会将此Cookie发送到服务器。您可以在servlet中使用此命令对其进行测试:

Cookie[] cookies = req.getCookies();

显然这是更新cookie列表的浏览器策略。