asp.net中的无Cookie会话

时间:2012-02-21 06:05:40

标签: asp.net session session-state cookieless

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

3 个答案:

答案 0 :(得分:5)

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

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

  

怎么可以说会话存储在服务器上,是不是,会话存储在服务器上?

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

  

如果是,那么cookieless会话的概念是什么

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

将会话ID视为表中的键,将Session状态视为值。只有密钥才会发送给客户端,而不是值。

对于ASP.NET,Session状态本身是一个包含键/值对的Dictionary。

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