一.概述
HTTP 是无状态的协议。 默认情况下,HTTP 请求是不保留用户值或应用状态的独立消息。 本文介绍了几种保留请求间用户数据和应用状态的方法。下面以表格形式列出这些存储方式,本篇专讲Session会话状态,计划下篇再讲应用状态。
存储方法 |
存储机制 |
Cookie | HTTP Cookie(可能包括使用服务器端应用代码存储的数据) |
Session 状态 | HTTP Cookie 和服务器端应用代码 |
TempData | HTTP Cookie 或Session状态 |
查询字符串 | HTTP 查询字符串 |
隐藏字段 | HTTP 窗体字段 |
HttpContext.Items | 服务器端应用代码 |
Cache | 服务器端应用代码 |
依赖关系注入 |
服务器端应用代码 |
1.1 Cookie
Cookie是服务器产生ID的标签。是识别用户,实现持久会话的最好方式。Cookie分为两类:会话Cookie和持久Cookie。二者唯一区别是设置过期时间。
(1)会话Cookie是临时的,当用户退出浏览器时,就会被删除。
(2)持久Cookie生存时间更长,存储在硬盘上,当浏览器退出或计算机重启时它们仍然存在。
Cookie跨请求存储数据,每次请求都会发送Cookie。Cookie的大小应该保持在最低限度。理想情况下,仅标识符存储在 Cookie 中。大多数浏览器 Cookie 大小限制为 4096 个字节。每个域仅有有限数量的 Cookie 可用,比如IE6.0每个域cookie个数最多为20个。
下面看Cookie是如何工作的:
(a) 客户端首次Request请求Web站点时&#