1

我们有一个已创建的 cookie,它们没有任何到期日期,因此它们使用 30 分钟的默认到期时间。我只是想让它们在 2 分钟内过期,如下所示,设置最大年龄。

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

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

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

4

2 回答 2

1

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

sessionCookie.setMaxAge(120);

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

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

于 2014-12-26T05:35:32.490 回答
0

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

测试饼干

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

Cookie[] cookies = req.getCookies();

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

于 2014-12-26T10:08:06.980 回答