【问题标题】:Cookieless sessions in asp.netasp.net 中的无 Cookie 会话
【发布时间】:2012-03-11 11:48:49
【问题描述】:

我最近在研究无 cookie 会话,我看到一篇文章说,每当在服务器上创建会话时,它的 ID 都存储在客户端计算机上的 cookie 中,我在大学里被认为是会话存储在服务器上,如果 sessionID 在 cookie 中并且 cookie 存储在本地客户端计算机中,如何说会话存储在服务器上,对,会话存储在服务器上?如果是,那么无cookie会话的概念是什么,谁能解释一下

【问题讨论】:

    标签: asp.net session session-state cookieless


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2023-03-05
          • 1970-01-01
          • 2015-03-30
          • 1970-01-01
          • 2012-10-18
          • 2019-02-04
          • 2011-11-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多