HTTP 会话的范围是啥?

Posted

技术标签:

【中文标题】HTTP 会话的范围是啥?【英文标题】:What is the scope of an HTTP session?HTTP 会话的范围是什么? 【发布时间】:2012-02-12 16:26:56 【问题描述】:

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

我一直在谷歌上搜索,但似乎无法得到直接的答案-会话应该在“当用户关闭浏览器时”被清除,但这对我来说不清楚-这是否意味着关闭浏览器窗口,或退出浏览器应用程序?同时打开两个浏览器窗口的用户是否维护两个不同的会话?如果同一个会话,浏览器选项卡是否总是部分?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

Darin- 所以你会说对于 HttpOnly cookie,会话的范围是每个浏览器 window 的生命周期吗? @Yarin,是的,这正是我要说的。如果您在一个浏览器选项卡上更改某些内容,例如退出,如果您有活动会话,您将在所有其他选项卡上自动退出。【参考方案2】:

您所有问题的答案都是“视情况而定”。

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

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

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

【讨论】:

BNL-“你是如何打开窗户的”是什么意思?你能详细说明一下吗?【参考方案3】:

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

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

【讨论】:

ThiefMaster - “当整个浏览器退出” = 退出浏览器应用?

以上是关于HTTP 会话的范围是啥?的主要内容,如果未能解决你的问题,请参考以下文章

春季请求和会话范围有啥区别?

在春季将会话范围应用于bean时出错

为啥我们需要开始会话,会话基本上是啥? [复制]

会话重载 - PHP 会话中存储的“数据过多”是啥?

WCF 可靠会话的目的是啥?

会话数据的用途是啥?