Cookies 提供了一种在 Web 应用程序中存储特定用户信息(如历史记录或用户偏好)的方式。Cookie 是连同请求和回应一起在 Web 服务器和客户端之间来回传送的少量文本。Web 应用程序能够在用户访问网站的时候读取 Cookie 中所包含的信息。
浏览器负责对用户系统中的 Cookies 进行管理。Cookies 连同页面请求一起被发送到服务器,并作为 HttpRequest
对象中的一部分而能够被访问,并暴露了一个 Cookies
集合。你只能够读取当前域或路径中的页面所创建的 Cookies。
步骤
读取 Cookie
-
把 Cookie 的名称作为关键字从
Cookies
中读取一个字符串。如下实例读取了一个名为 UserSettings 的 Cookie,然后读取名为 Font 的子键的值。
if (Request.Cookies["UserSettings"] != null) { string userSettings; if (Request.Cookies["UserSettings"]["Font"] != null) { userSettings = Request.Cookies["UserSettings"]["Font"]; } }
编译代码
该实例需要:
-
一个 ASP.NET Web 页面。
-
先前被写入的 Cookie(名为 UserSettings),与[ASP.NET 实践:写入 Cookie]中所例示的一样。
健壮编程
因为安全原因,你只能够对被相同域中的页面所设置的 Cookies 进行读取。如果 Cookie 的 Path
属性已经被设置,那么这个 Cookie 只在路径中所指定的相同域的页面和子目录中可用。
在读取特定 Cookie 的值的时候,先测试该 Cookie 是否存在并且是否已经赋值,否则会发生一个 NullReferenceException
异常。
Cookie 中的所有值都被存储成 String
类型,所以要把 Cookie 的值当成不同的数据类型使用,你还必须进行适当的类型转换。
安全性
浏览器只能够把数据回发到最初创建 Cookie 的服务器中。但是,恶意用户能够对 Cookies 进行访问并且读取其中的内容。所以不要把机密信息存储到 Cookie 中,如用户名称或密码。而是存储一个能够用来在服务器上查寻机密信息的记号。另外,Cookies 还能够被篡改,所以 Cookie 中的任何数据都应该使用防止跨网站脚本攻击时的策略来进行测试。更多信息,请参考:[脚本开发概览]。