正在阅读:无 Cookie 的 ASP.NET无 Cookie 的 ASP.NET

2005-08-01 10:15 出处: 作者:Dino Esposito 责任编辑:moningfeng

  [摘要]:本文探究无 Cookie 会话的优缺点,并且讨论为什么应该避免在会话状态中存储有价值的信息。

  我们承认这一点 — 我们对会话状态这一概念是如此习以为常,以至于我们忘记了会话状态是在 1997 年用 Active Server Pages (ASP) 引入的一个手段。会话状态使开发人员能够在用户与应用程序交互这段时间内持久保存有关该用户的一块信息。特定于用户的信息通常会保留 20 分钟长的时段,而每当用户返回该站点时,该时段都将重新开始计时。

  当用户首次连接到站点时,将以内存块的形式创建一个全新的会话状态以存放数据,同时,还会创建一个 ID 以便将其与当前用户唯一地联系起来。当下一次发出请求时,该用户将被要求提交该会话 ID,以便检索并正确地还原会话状态。会话 ID 是 ASP 和 ASP.NET 完全自主生成的字母数字字符串。用户如何管理它并确保用每个后续请求来包装它呢?

  HTTP 协议的性质是无状态的,并且没有任何人试图更改这一事实。差不多二十年以前,当 Netscape Corporation 开发它的第一个浏览器时,它“发明”了一种通过 HTTP 工作的持久性机制。它将其称为 HTTP Cookie。有趣的是,计算机科学行话中的术语“Cookie”仅仅表示一块由应用程序持有的不透明数据,它会影响用户但永远不会由用户直接管理。

  因此,Cookie 存储会话的 ID,而浏览器则在 Web 服务器和本地用户的计算机之间来回移动它们的内容。当启用了 Cookie 的浏览器收到响应数据包时,它将寻找附加的 Cookie,并将它们的内容存储到本地 Windows 目录中特定文件夹的某个文本文件中。Cookie 还包含有关该源站点的信息。接下来,当浏览器向该站点发送请求时,它会在 Cookie 文件夹中查找源自该域的 Cookie。如果找到,则该 Cookie 自动附加到传出的数据包中。该 Cookie 将命中服务器应用程序,并在此被检测、提取和处理。

  最终,Cookie 使 Web 站点更加易于导航,因为它们在用户体验之上提供了必然跨越多个请求的连续性错觉。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品