【问题标题】:Having session cookies expire when the browser closes but still sent to server浏览器关闭时会话 cookie 过期但仍发送到服务器
【发布时间】:2012-05-26 05:22:07
【问题描述】:

我对 cookie 感到困惑。如果我写这样的cookie

 document.cookie = "userName=" + me.name + ";";

然后它通过 Ajax 调用和页面加载(我在其中读取和使用该值)传递给服务器。然而,cookie 在访问之间也会持续存在,即如果浏览器关闭并重新打开,它仍然存在。我不想要那个。但是如果我将它设置为这样的会话 cookie

 document.cookie = "userName=" + me.name + "; expires=;";

然后在浏览器关闭时正确删除,但不会通过 Ajax 调用和页面加载发送到服务器。

(注意,浏览器会话之间的持续存在可能是 IE10 测试版错误,其他帖子建议我的第一行应该生成一个在浏览器关闭时过期的 cookie。)

这两行在创建的 cookie 类型方面有什么区别,如果我想要一个在浏览器关闭时死掉但传递给服务器的 cookie,那么设置它的正确 JavaScript 是什么?

【问题讨论】:

  • 你在其他浏览器上试过了吗?这将帮助您了解意外行为是由 IE 错误引起的,还是与您有关。
  • 不,我没有,但这是一个很好的建议,我会试试的。

标签: javascript cookies session-cookies


【解决方案1】:

如果您没有为 cookie 指定过期时间,它通常会在会话结束/浏览器关闭时过期。

我不确定 + "(打开双引号)会在下面的代码末尾引起什么样的副作用。没有语法错误?

document.cookie = "userName=" + me.name + ";

你是说?

document.cookie = "userName=" + me.name;

另外,您是否有可能已经设置了持久性 cookie,在这种情况下,只有第二个代码会将其更改为会话 cookie?

【讨论】:

  • 但这不是正在发生的事情,正如我在问题中报告的那样。
  • 对不起,现在我发现还有一个与之相关的问题。 cookie 值未发送。
猜你喜欢
  • 2011-04-21
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2012-08-20
  • 2014-08-14
  • 1970-01-01
相关资源
最近更新 更多