我正在尝试设置一个可以使用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中。
有什么想法吗?
答案 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年: - )