浏览器重启后神奇地删除了Cookie

时间:2015-02-11 10:50:57

标签: java google-chrome session cookies http-headers

我正在尝试设置一个可以使用2年的cookie。但是,当我重新启动浏览器时,cookie似乎被删除了。

行为似乎是随机的,有时候cookie会在重启时保留,但是在下次重启时它会再次消失。

我的页面返回的完整标题:

HTTP/1.1 200 OK
Content-Length: 16
x-response-time: 11ms
Set-Cookie: ___auth=853c780cf6cacb177fd641af543c2e23048730aab126c2ee2f93cf0b725f3f30ec425160ea225761bee9bd9c100a1b897031f9194a7564301a9849b6e932440bb299cadabe885ca108973000bf5c183e; 
Expires=Fri, 10 Feb 2017 10:30:53 GMT; Path=/

目前正在http://localhost:8080上运行,尚未在生产中进行测试。行为发生在chrome和firefox中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如您所见here,在HTTP 1.1中不推荐使用Expires属性,而使用Max-Age。如果您为特定Cookie设置了一些年龄,则可以将其视为Cookie中的Max-age,如下所示

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

但是在你的回答中,没有Max-age设置 ,因此它被视为会话cookie并在浏览器退出时被清除: - )

Set-Cookie: ___auth=853c780cf6cacb177fd641af543c2e23048730aab126c2ee2f93cf0b725f3f30ec425160ea225761bee9bd9c100a1b897031f9194a7564301a9849b6e932440bb299cadabe885ca108973000bf5c183e; 

所以使用下面的Cookie API创建cookie并将它们添加到Servlet中的HttpServletResponse,就像这样

Cookie cookie = new Cookie ("_auth", authString);
cookie.setMaxTime( 63072000 ); // time in seconds

response.addCookie(cookie);

有了它,它应该持续2年: - )