java - 浏览器重启后Cookie被神秘删除

标签 java google-chrome session cookies http-headers

我正在尝试设置一个可以保存 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/

相关文章:

jquery - Codeigniter session 因 ajax 调用而出错

javax.persistence.TransactionRequiredException : No active transaction for PuId=

java - 只保留字母字符

java - 如何使用 Java 代码将键值对字符串数组从 strings.xml 导入 TextView

java - ArrayList<Number> 是什么意思?

javascript - 显示与谷歌浏览器中键入的不同的键盘字符

javascript - window.screenX/screenY 没有在 chrome 上更新

javascript - Meteor Session.get 和正则表达式

javascript - 如何强制 JavaScript 深度复制字符串?

php - 为什么调用 session 不起作用? (代码点火器 3)