当对每个请求使用session_regenerate_id()时,为什么打开新选项卡会导致先前选项卡中的页面注销?

问题描述 投票:1回答:1

我正在阅读《 PHP和MySQL新手入门》,它说:

实际上,更改 每次页面加载时用户的会话ID。 但是,这样做会引起一些实际问题。如果有人有不同 页面在不同的标签页中打开,或者网站使用一种称为Ajax的技术, 当他们打开另一个选项卡时,实际上可以注销该选项卡!

我无法理解幕后发生的事情,以及为什么用户在打开另一个标签时会退出上一个标签。通过生成新的会话ID,包含新会话ID的新cookie将被发送到浏览器。

因此,当我打开另一个选项卡时,会话ID将更改,并且新的cookie将发送到浏览器。为什么浏览器不使用新的cookie继续登录,而页面被注销到底发生了什么呢?

php session session-cookies sessionid
1个回答
0
投票

如果在同一浏览器中已经打开了同一站点,则打开新标签页不会启动新会话。浏览器尝试使用现有会话。您甚至可以在这个网站上亲自观察这种行为-即使您打开一个新标签页(以及正在阅读此标签的标签页)并转到StackOverflow,也不会再次登录。

但是,如果每个请求都将生成一个新的会话,则它将使该站点上所有已打开的打开选项卡之间的共享会话无效,因为它们将依赖于后台的旧cookie。

© www.soinside.com 2019 - 2024. All rights reserved.