HTTP会话的范围是什么?

时间:2012-01-17 21:21:41

标签: http httpsession

HTTP会话的范围究竟是什么?

我一直在谷歌搜索,但似乎无法得到一个直接的答案 - 当用户关闭他们的浏览器时,会话应该被清除“,但这对我来说不清楚 - 这是否意味着关闭浏览器窗口,或退出浏览器应用程序?同时打开两个浏览器窗口的用户是否维护两个不同的会话?浏览器标签是否始终属于同一个会话?

3 个答案:

答案 0 :(得分:14)

这取决于您在应用程序中跟踪会话的方式。

默认情况下,HttpOnly cookies会跟踪它们。这意味着如果用户关闭当前选项卡,则他不会松开会话。如果他关闭浏览器虽然他失去了会话。

如果您使用无Cookie模式跟踪会话(cookieless="true"),ASP.NET会将自定义令牌附加到所有网址,这意味着可以在同一浏览器的2个不同选项卡上使用2个不同的会话记录用户实例

答案 1 :(得分:5)

你所有问题的答案都是“它取决于”。

多个浏览器窗口可以是多个会话,也可以是同一个会话。这取决于浏览器行为以及如何打开窗口。

在IE中,“新窗口”有一个菜单选项,“新会话”有一个菜单选项。 “新窗口”选项将保持相同的会话,“新会话”选项将打开具有不同会话的新窗口。您还可以在启动浏览器时按住Shift键在IE中获取新会话。

如果您必须确保所有会话都已结束,请关闭所有浏览器窗口。

答案 2 :(得分:3)

当整个浏览器退出时,通常会删除会话cookie。由于多个选项卡/窗口共享相同的cookie,因此这些选项卡/窗口将使用相同的会话。

但是,应用程序也可以通过URL传递会话标识符。在这种情况下,每个选项卡/窗口都有自己的会话,只要您不通过具有有效会话ID的链接打开它。