我正在尝试设置一个可以保存 2 年的 cookie。但是,当我重新启动浏览器时,cookie 似乎被删除了。
该行为似乎是随机的,有时 cookie 在重新启动时会保留,但在下次重新启动时它会再次消失。
我的页面返回的完整 header :
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 中都会发生这种行为。
有什么想法吗?
最佳答案
如您所见here , Expires 属性在 HTTP 1.1 中已被弃用,取而代之的是 Max-Age。如果您为特定 Cookie 设置了某个年龄,则可以将其视为 Cookie 中的 Max-age
,如下所示
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
但是在您的回复中,没有设置 Max-age ,因此它被视为 session 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 年:-)
关于java - 浏览器重启后Cookie被神秘删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452447/