【发布时间】:2016-07-07 07:53:34
【问题描述】:
在 Firefox 和 Safari 中进行测试,我尝试了以下两行。每个都设置 cookie,但在我关闭(然后重新打开)浏览器后,这两种方法都不会使 cookie 过期。 浏览器的 cookie 信息说“测试”设置为过期,“会话结束”,但它没有发生。
有一些类似的帖子(例如,When does a cookie with expiration time 'At end of session' expire?),但没有任何帮助或关于通过 JavaScript 设置 cookie,就像我正在做的那样。
// fails to expire after browser closing
document.cookie = "test=1; expires=0; path=/";
// fails to expire after browser closing
document.cookie = "test=1; path=/";
【问题讨论】:
-
这很有趣。这可能是由于某些内容安全设置,例如,cookie 最初设置在服务器响应标头中,并且设置了“httpOnly”标志。您的服务器是否发送 set-cookie 标头?
-
@lxe 事实证明这很愚蠢。我没有意识到,当您在 Mac 上“关闭”浏览器时,仍然有一个浏览器进程保持活动状态。您必须明确退出浏览器。一旦我这样做了,cookie就消失了。
-
如果在浏览器设置中选择了“从上次中断的地方继续”选项,Chrome 会话中的 cookie 可能不会被删除。
标签: javascript session cookies