Cookies 提供了一种在 Web 应用程序中存储特定用户信息(如历史记录或用户偏好)的方式。Cookie 是连同请求和回应一起在 Web 服务器和客户端之间来回传送的少量文本。Web 应用程序能够在用户访问网站的时候读取 Cookie 中所包含的信息。
浏览器负责对客户端计算机中的 Cookies 进行管理。Cookies 是使用 HttpResponse
对象被发送到客户端的,该对象暴露了一个名为 Cookies
的属性集合。任何你想要在 Web 应用程序中发送到浏览器的 Cookies 都必须被添加到这个集合中。在你写入一个新 Cookie 的时候,你必须指定 Name
和 Value
属性。每个 Cookie 都必须拥有一个唯一的名称,这样 Web 应用程序才能够在浏览器的未来请求中对它进行识别。
把 Cookie 写入到用户计算机中有两种方式。你既能够直接在 Cookies
集合中设置 Cookie 的属性,也能够创建一个新的 HttpCookie
对象实例并把它添加到 Cookies
集合中。你必须在 ASP.NET 页面被呈现到客户端之前创建 Cookies。例如,你可以在 Page_Load
事件处理器中写入一个 Cookie,但是不能够在 Page_Unload
事件处理器中写入 Cookie。更多关于页面生命周期的信息,请参考:[ASP.NET 页面生命周期概览]。
更多信息,请参考:[ASP.NET Cookies 概览]。
在 Cookies
集合中设置属性来写入 Cookie
-
在你想要写入 Cookie 的 ASP.NET 页面中,在
Cookies
集合中指定 Cookie 的属性。如下代码实例说明了一个名为 UserSettings 的 Cookie,并为子键 Font 和 Color 设置了值。同时也把失效时间设置成了明天。
Response.Cookies["UserSettings"]["Font"] = "Arial"; Response.Cookies["UserSettings"]["Color"] = "Blue"; Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(1d);
创建 HttpCookie
对象的实例来写入 Cookie
-
创建
HttpCookie
类型的一个对象实例并为其指定名称。 -
指定 Cookie 子键中的值并设置 Cookie 的属性。
-
把这个 Cookie 添加到
Cookies
集合中。如下代码实例说明了一个名为 myCookie 的
HttpCookie
对象实例,用来展示一个名为 UserSettings 的 Cookie。HttpCookie myCookie = new HttpCookie("UserSettings"); myCookie["Font"] = "Arial"; myCookie["Color"] = "Blue"; myCookie.Expires = DateTime.Now.AddDays(1d); Response.Cookies.Add(myCookie);
健壮编程
默认时,Cookies 在相同域中的所有页面中被共享,但是你能够通过设置它们的 Path
属性的方式把 Cookies 限制到一个特定的子目录。要允许 Cookie 能够被应用程序所有目录中的所有页面所访问,请在应用程序根目录中的页面中对它进行设置,并且不要设置 Path
属性。
如果你没有指定 Cookie 的有效期,那么这个 Cookie 将无法在客户计算机中被持续保持,并且会连同用户的会话状态一起失效。
Cookies 只能够存储 String
类型的值。你必须在存储到 Cookie 之前把任何非字符串的值转换成字符串。大部分数据类型通过调用 ToString
方法就能够实现。更多关于数据类型转换成字符串的信息,请参考相应类型的[ToString
方法]。
安全性
不要在 Cookie 中存储机密信息(如用户名称或密码)。更多关于 Cookie 安全性的信息请参考:[ASP.NET Cookies 概览]。