【问题标题】:Why do sessions expire after closing the browser window?为什么关闭浏览器窗口后会话会过期?
【发布时间】:2016-12-13 11:40:46
【问题描述】:

根据Where are $_SESSION variables stored?:“通常 session-id 存储在 cookie 中,但也可以附加到 urls”。读完后,我问 myseld:那么,如果会话 ID 存储在 cookie 中,为什么关闭浏览器窗口时会删除会话 ID?

然后,在谷歌上搜索了一下之后,我发现有两种不同类型的 cookie:会话 cookie 和持久 cookie。

我猜想 session-id 存储在会话 cookie 中,但是:除了名称证据之外,为什么会话存储在会话 cookie 中而不是持久 cookie 中?每次打开浏览器时都需要创建一个新的 session-id 吗?为什么不重复使用呢?

【问题讨论】:

  • 您是否阅读过有关会话缓存过期的信息?
  • 对不起,我看不到会话缓存与问题的确切关系。
  • 如果您检查存储的 cookie,您会发现它们仍然存在。它不是服务器缓存过期的cookie
  • 但我在整个互联网上阅读:“会话的问题是,当您关闭浏览器时,您也会丢失会话”。所以你的意思是实际上它们并没有被客户端立即删除,但它往往是这样的,因为每当用户重新打开浏览器时,服务器会话缓存配置已经删除了它?
  • 实施您自己的 cookie/缓存,超出您可以控制的过期时间

标签: session cookies


【解决方案1】:

将会话存储在会话 cookie 中的原因有很多。一种情况是公共计算机:如果前一个用户已经登录到他们在图书馆的银行帐户来支付账单,您不希望下一个用户能够通过查看浏览器中的历史记录登录到该会话。通过关闭浏览器确保会话消失可以缓解这种情况。

您也可以使用持久性 cookie,很多人也这样做,例如 Gmail,但重要的是设置一个不太长的过期时间。否则,如果有人掌握了会话 ID,他们可以永远使用它。通常,服务器会在下一个会话结束前几分钟向您发送一个新的有效会话 ID,以保持您的会话有效。

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2017-01-04
    • 2012-02-12
    • 1970-01-01
    • 2015-11-07
    • 2011-06-23
    • 2013-05-09
    • 2012-01-21
    相关资源
    最近更新 更多