浏览器重启后cookie神秘删除
Cookie mysteriously deleted after browser restart
我正在尝试设置一个可以保存 2 年的 cookie。但是,当我重新启动浏览器时,cookie 似乎被删除了。
行为似乎是随机的,有时 cookie 在重新启动时会保留,但在下一次重新启动时又消失了。
我的页面返回完整 headers:
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,在 HTTP 1.1 中弃用了 Expires 属性,取而代之的是 Max-Age
。如果您为特定的 cookie 设置了一些年龄,它可以被视为 Max-age
在 cookie 中,如下所示
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 年:-)
我正在尝试设置一个可以保存 2 年的 cookie。但是,当我重新启动浏览器时,cookie 似乎被删除了。
行为似乎是随机的,有时 cookie 在重新启动时会保留,但在下一次重新启动时又消失了。
我的页面返回完整 headers:
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,在 HTTP 1.1 中弃用了 Expires 属性,取而代之的是 Max-Age
。如果您为特定的 cookie 设置了一些年龄,它可以被视为 Max-age
在 cookie 中,如下所示
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 年:-)