2012-02-21 177 views
1

我最近在挖掘有关无Cookie会话的内容,我在一篇文章中提到,无论何时在服务器上创建会话,其ID都存储在Cookie中,客户端计算机上,我正在我的大学认为会话存储在服务器上,并且如果会话ID在Cookie中,并且cookie在本地存储在客户端计算机中,如何说会话存储在服务器上,是吗?会话存储在服务器上吗?如果是,那么cookieless session的概念是什么,任何人都可以解释我在asp.net中无Cookie会话

回答

5

会话状态(几乎总是)存储在服务器上,并且由随机数(会话令牌)标识。

该令牌需要由客户端存储,并与他的HTTP请求一起发送到服务器(以便服务器可以记住他之前见过他并将会话与请求相关联)。

如何说会话存储在服务器上,是吗,会话存储在服务器上?

只有会话令牌存储在客户端,由于它是一个随机数,它本身不包含任何有用的信息。它只与存储在服务器上的数据一起变得有价值。

如果是,那么什么是Cookie会话

存储令牌使用Cookie的最简单方法的概念。这就是发明饼干的原因。替代方法是使用隐藏的表单变量或作为URL的一部分来回传递cookie。

1

会话存储在服务器上。与ID关联的每个会话(ASP.NET中最简单的会话状态提供程序只是内存中的字典,其ID为键)。此ID也存储在客户端的Cookie中,但在无Cookie会话的情况下,ID存储在URL(example)中。

0

将会话ID视为表中的键,将会话状态视为值。只有钥匙被发送给客户,而不是价值。

对于ASP.NET,会话状态本身是一个包含键/值对的字典。

如果您使用的是标准SQL Server会话提供程序,则上面提到的表称为ASPStateTempSessionsSessionId是PK,并且序列号为Dictionary存储在SessionItemShortSessionItemLong列中。