会话是存储在客户端还是服务器端

Dav*_*vid 38 asp.net asp.net-mvc-3

我想知道是否HttpContext.Session使用cookie来存储数据.一位同事告诉我,在手机网站上,手机通常没有cookie,因此你没有会话.我一直认为会话是存储在服务器端的数据,并且不依赖于客户端对象,请解释我是否错了.

我看了这个.

vcs*_*nes 55

在ASP.NET中; 你有一个会话cookie.此cookie用于标识哪个会话是您的; 但实际上并不包含会话信息.

默认情况下,ASP.NET通常会将会话信息存储在工作进程(InProc)内部的内存中w3wp.exe.还有其他存储会话的模式,例如Out of Proc和SQL Server.

ASP.NET默认使用cookie; 但如果你真的需要,可以配置为"无cookie"; 而是将您的会话ID存储在URL本身中.这通常有几个缺点; 例如链接的维护变得困难,人们为具有过期会话ID的URL添加书签(因此您需要处理过期的会话ID等).大多数现代手机,甚至是非智能手机,都支持cookies.较旧的手机可能没有.您是否需要支持无cookie会话取决于您自己.

如果您的网址如下所示:

http://www.example.com/page.aspx

无cookie的URL如下所示:

http://www.example.com/(S(lit3py55t21z5v55vlm25s55))/page.aspx

lit3py55t21z5v55vlm25s55会话ID 在哪里.

您可以在此处了解有关ASP.NET会话状态的更多信息


Guf*_*ffa 26

会话数据存储在服务器上,但它还在cookie中存储id字符串以标识用户.

如果不支持cookie,则无法存储id字符串,并且当用户发出另一个请求时,服务器无法配对会话.

会话ID只是服务器生成的数字(来自计数器或随机),因此它不包含您存储在会话对象中的数据中的任何信息.

(该应用程序还可以配置为将会话放在URL而不是cookie中.这使您可以使用没有cookie的会话,但它会破坏您的网站.)

  • @ user351709:你在`web.config`文件的`sessionState`部分使用`cookiless ="true"`.http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx (3认同)

Mau*_*ark 16

如今它可以是两者.

服务器会话

服务器端会话已在其他帖子中解释过.会话存储在服务器上,但它需要一个cookie来存储指示谁正在请求会话值.

客户会话

W3C定义的WebStorage新概念展示了如何在需要时进行客户端会话.以下是WebStorage的HTML5实现:https: //code.google.com/p/sessionstorage/