我有一个从 servlet 生成的 cookie,我希望它是持久的——也就是说,设置 cookie,关闭 IE,重新启动它,仍然能够读取 cookie。我正在使用的代码如下:
HttpServletResponse response =
(HttpServletResponse) FacesContext.getCurrentInstance()
.getExternalContext().getResponse();
Cookie cookie = new Cookie("someKey", "someValue");
cookie.setMaxAge(7 * 24 * 60 * 60);
response.addCookie(cookie);
这在 Firefox 中效果很好,但在 IE 6/7 中,cookie 不会在浏览器重新启动之间保存。我已经检查了我在设置中能想到的所有内容,但无法弄清楚是什么导致 cookie 被删除。据我所知,使用正数调用 setMaxAge 会使 cookie 持久化。任何想法为什么会出错?
编辑
我已经使用 Olaf 建议的更多信息技巧验证了 cookie 正在尝试设置为会话 cookie,而不是持久性 cookie;最大年龄设置为“会话结束”。所以似乎没有为 IE 设置最大年龄 - 我已经验证在 Firefox 中,最大年龄设置正确。我仍然不知道发生了什么。