【问题标题】:Do session use cookies?会话是否使用 cookie?
【发布时间】:2011-02-05 02:21:45
【问题描述】:

这是一个月前问的面试题......

会话是否使用 cookie?如果有,他们是怎么做到的?

假设Session["UserId"]=1 这个会话变量如何在内部使用cookie?如果是这样,cookie 的名称是什么,该 cookie 的值是什么......

【问题讨论】:

    标签: c# asp.net session cookies


    【解决方案1】:

    是的,会话管理是使用一种会话 ID 完成的,即 cookie。浏览器中维护的 cookie 有助于后端识别用户。

    如果您从同一台机器的两个浏览器访问应用程序,则将维护两个 cookie,其中每个浏览器都是 Asp.Net 后端应用程序的单独用户

    【讨论】:

      【解决方案2】:

      是的,默认情况下 ASP.NET 会话使用 cookie。正如您所说,这是一个经常出现的 ASP.NET 面试问题,您可以check this video 如何回答同样的问题,并且围绕该主题提出了其他交叉问题。 但现在是长篇大论。

      所以它的工作方式。首先要注意的是实际数据存储在会话中。客户端拥有存储 sessionid 的 cookie。Sessionid 就像一个 ID,可以为这个客户端附加一个 ID,会话中存储的相应数据是什么。

      当客户端进行调用时,他会发送 cookie (sessionid) 并使用该 sessionid ,从会话变量中恢复状态。

      【讨论】:

        【解决方案3】:

        每个会话都会有 SessionID。会话 ID 是一个唯一编号,服务器在他访问(会话)期间分配给特定用户。默认情况下,会话 ID 附加到 cookie,并且在请求/响应期间,该 cookie 将在客户端到服务器(以及服务器到客户端)之间共享。服务器将根据从 cookie 中检索到的会话 id 来识别会话。

        关于 cookieless,如果您的浏览器不支持 cookie 或禁用,则将使用 cookieless。由于是 Cookieless,asp.net 无法创建 cookie 来保存会话 id。相反,会话 ID 将在查询字符串中传递...

        【讨论】:

          【解决方案4】:

          虽然数据本身存储在服务器上(或在 SQL 中,如果以这种方式配置),但需要有一种方法将会话数据与特定用户相关联。

          默认情况下,这是使用 cookie 完成的,但您可以配置无 cookie,在这种情况下,唯一 id 存储在 URL 中。

          来自微软:

          ASP 通过在会话开始时向客户端提供分配给用户的唯一键来维护会话状态。此密钥存储在客户端在每次请求时发送到服务器的 HTTP cookie 中。然后,服务器可以从 cookie 中读取密钥并重新膨胀服务器会话状态。

          http://msdn.microsoft.com/en-us/library/ms972429.aspx

          【讨论】:

          • 这篇文章几乎提到了每一个细节。 Session ID 必须在浏览器和服务器之间传递,这样 IIS/ASP.NET 才能知道某个请求需要使用哪个会话对象。
          • 检查this
          【解决方案5】:

          不,存储在服务器上某处的 tmp 文件夹中。 会话是服务器端,cookie 是客户端。

          【讨论】:

          • Cookie 是将用户的会话 ID 与服务器上的会话数据绑定的默认方法。
          • 在 php 中的会话存储在服务器上。我没有意识到这是asp。我的错。
          • 您是对的,实际变量存储在服务器上(尽管您可以提供不同的会话状态提供程序),但正如 Michael Shimmins 指出的那样,会话令牌默认存储在 cookie 中.
          • 这太糟糕了,如果它在 cookie 中,你不能操纵 cookie 吗?
          • 这是我在许多(我的同事)PHP 开发人员中看到的一个巨大的误解。 PHP 会话 ID 也存储在客户端的 cookie 中。 PHP 还能如何识别会话 ID(不包括不太安全的 URL 令牌方法)?想想吧。
          猜你喜欢
          • 2017-05-22
          • 2012-02-10
          • 1970-01-01
          • 1970-01-01
          • 2017-05-30
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 2011-06-11
          相关资源
          最近更新 更多