ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

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 中的任何数据都应该使用防止跨网站脚本攻击时的策略来进行测试。更多信息,请参考:[脚本开发概览]。

posted on 2007-01-13 16:41  Laeb  阅读(1480)  评论(0编辑  收藏  举报