为什么不关闭选项卡删除会话Cookie?

23 cookies session tabs

我在我的网站上使用基于会话的cookie.令我完全惊讶的是,我注意到如果我设置会话cookie(不是持久cookie),关闭选项卡,然后重新连接到站点,会话cookie仍然存在.实际上,这不是我所期望的.我原以为会删除会话cookie.

如果您关闭浏览器,会删除会话cookie,那么为什么不关闭选项卡以获得相同的结果呢?

因此,我正在使用PHP5和jQuery.有什么我可以这样做,当一个标签关闭时,我可以解决这个会话问题?不幸的是,BODY标记上的onbeforeunload事件在这里没有用,因为当您点击页面时它会触发该事件,而不仅仅是关闭标签.

Pau*_*der 16

会话cookie是按进程而不是每个窗口.因此,即使您选择了新窗口,您仍然可以获得相同的会话ID.这种行为是有道理的.您不希望用户在浏览您的网站时每次打开新窗口时重新登录.

我并不知道任何真正的方法.

  • 在这种情况下,选项卡关闭不是主要问题。它更积极地控制会话的到期。您需要在 JS 中的客户端上实现某种活动超时,以便在没有用户活动后自动注销。您会在大多数银行网站上发现这种行为。 (2认同)

San*_*der 8

这是设计并试图改变它是一个非常糟糕的主意.如果用户在新标签页中打开链接并关闭该链接,该怎么办?是否应销毁原始标签中的会话?当然不是!这说明了为什么你甚至不应该考虑这个问题.

会话在最后一个浏览器窗口关闭时结束.如果你想要别的东西,你:

  1. 不想要课程;
  2. 需要建立自己的"迷你会话"基础设施;
  3. 可能是为了一个受伤和错误的世界.

  • 这里的问题是公共环境,如图书馆,以及某人的在线个人资料,其中包含身份信息.我需要提出一个解决方案. (3认同)

小智 6

如果您需要依赖选项卡关闭,可以使用会话网络存储代替 cookie。

  • 我认为这是最有帮助的答案,以及已接受答案中的解释。是的,您可以做您想做的事情,只需使用会话存储即可。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage (2认同)