如何:读取 Cookie

更新:2007 年 11 月

Cookie 提供了一种在 Web 应用程序中存储用户特定信息(如历史记录或用户首选项)的方法。Cookie 是一小段文本信息,伴随着请求和响应在 Web 服务器和客户端之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。

浏览器负责管理用户系统上的 Cookie。Cookie 随页请求被发送至服务器,并且可作为 HttpRequest 对象(此对象公开 Cookies 集合)的一部分进行访问。只能读取当前域或路径中的页已经创建的 Cookie。

过程

  • 使用 Cookie 名作为键从 Cookies 集合中读取字符串。

    下面的示例读取名为 UserSettings 的 Cookie,然后读取名为 Font 的子键的值。

    If (Request.Cookies("UserSettings") IsNot Nothing) Then
        Dim userSettings As String
        If (Request.Cookies("UserSettings")("Font") IsNot Nothing) Then
            userSettings = Request.Cookies("UserSettings")("Font")
        End If
    End If
    
    if (Request.Cookies["UserSettings"] != null)
    {
        string userSettings;
        if (Request.Cookies["UserSettings"]["Font"] != null)
        { userSettings = Request.Cookies["UserSettings"]["Font"]; }
    }
    

编译代码

此示例需要:

  • 一个 ASP.NET 网页。

  • 一个先前编写的名为 UserSettings 的 Cookie,如主题如何:编写 Cookie 中所述。

可靠编程

出于安全原因,您只能读取属于同一域的页所设置的 Cookie。如果已设置 Cookie 的 Path 属性,则只有该域路径中的页和子文件夹能够使用该 Cookie。

在读取特定 Cookie 值时,请测试该 Cookie 是否存在以及它是否具有值,否则将发生异常。

Cookie 中的所有值都作为 String 类型存储,因此若要将 Cookie 值作为其他数据类型使用,必须对值进行相应地转换。

安全性

浏览器只能将数据发送回最初创建该 Cookie 的服务器。但是,怀有恶意的用户可以访问 Cookie 并读取其中的内容。不要在 Cookie 中存储敏感信息(如用户名或密码)。而应该存储可用来在服务器上查找敏感信息的标记。此外,Cookie 能够被篡改,因此应采取与防止跨站点脚本攻击相同的措施来处理 Cookie 中的任何数据。有关更多信息,请参见脚本侵入概述

请参见

任务

如何:编写 Cookie

如何:删除 Cookie

概念

ASP.NET Cookie 概述

Web 应用程序的基本安全实施策略

ASP.NET 状态管理概述