当用户使用Firefox从计算机“A”登录时,同一会话是继续还是为同一“USER”创建的新会话。
据我了解,服务器为该用户创建了一个会话。
现在,在不关闭浏览器选项卡的情况下,用户打开一个新选项卡并转到同一页面[需要用户首先登录]。
会发生什么?
服务器是否会继续相同的会话,使代码识别用户?
服务器是否会为此请求启动新会话并销毁旧会话?
考虑相同的问题,但现在用户从另一个浏览器登录。会发生什么?
答案 0 :(得分:4)
会话基于存储会话ID的cookie。所以,这完全取决于浏览器如何存储它的cookie。
通常,浏览器在选项卡之间共享cookie,因此使用新选项卡时,会话ID将被保留,并且不会创建新会话。
但是,两个不同的浏览器不共享cookie,因此在另一个浏览器中,会创建新会话。
还有无cookie会话。在这种情况下,会话ID存储在URL(例如http://www.server.com?sessionId=12345)中。很明显,在这种情况下,如果您打开一个新选项卡并键入不带sessionId的地址,也会创建一个新选项卡。
答案 1 :(得分:1)
这完全取决于网站编程。但通常你可以看到标签共享会话但不同的浏览器。
答案 2 :(得分:1)
如果从当前页面生成新的选项卡/窗口(除非通过查询字符串处理无cookie会话),则会话不在浏览器之间共享,并且仅在选项卡(或窗口)之间共享。当您单击链接并在新选项卡或窗口中打开或选择复制当前选项卡/窗口时,两个选项卡/窗口将共享同一会话。这是浏览器相关的,每个浏览器都可以以不同的方式实现它。
测试非常简单。使用Label
创建一个简单的aspx页面,并返回当前页面的链接。在PageLoad
执行以下操作:
if (Session["Test"] != null)
{
Session["Test"] = (int)(Session["Test"]) + 1;
}
else
{
Session["Test"] = 1;
}
yourLabel.Text = Session["Test"].ToString();
然后使用不同的方法打开页面。将href
与target=_blank
一起使用。 href将创建一个新的选项卡/窗口并共享会话,但不应以任何其他方式加载页面。
答案 3 :(得分:0)
用户会话通常保存在由Web服务器创建的cookie中,但实际上存储在客户端上。如果两个Firefox选项卡共享cookie,则会话将在它们之间共享。但是,如果两个选项卡不共享cookie,则会为每个选项卡创建一个服务器会话。
答案 4 :(得分:0)
会话通常不会在浏览器中保留。如果用户打开一个新选项卡并返回登录页面并再次登录,或者如果他自动登录,则取决于后端代码的编写方式。
答案 5 :(得分:0)
如果是新选项卡,则将使用相同的会话(因为浏览器将提供相同的会话cookie)。如果它是不同的浏览器,则cookie将不存在并且将启动新会话(假设您使用标准会话机制,其他浏览器中的会话将持续存在)。