如何:编写 Cookie

更新:2007 年 11 月

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

浏览器管理客户端计算机上的 Cookie。使用 HttpResponse 对象可向客户端发送 Cookie,该对象会公开称为 Cookies 的属性。任何需要 Web 应用程序发送到浏览器的 Cookie 都必须添加到此集合中。编写新 Cookie 时,必须指定 NameValue。每个 Cookie 必须有一个唯一的名称,这样在以后当浏览器随同请求发送 Cookie 时,Web 应用程序就可以标识该 Cookie。

有两种方法可以向用户计算机写 Cookie。可以直接为 Cookies 集合设置 Cookie 属性,也可以创建 HttpCookie 对象的一个实例并将该实例添加到 Cookies 集合中。必须在 ASP.NET 页呈现给客户端之前创建 Cookie。例如,可以在 Page_Load 事件处理程序中编写 Cookie,但不能在 Page_Unload 事件处理程序中编写 Cookie。有关页面寿命周期的更多信息,请参见 ASP.NET 页生命周期概述

有关更多信息,请参见 ASP.NET 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(1)
    
    Response.Cookies["UserSettings"]["Font"] = "Arial";
    Response.Cookies["UserSettings"]["Color"] = "Blue";
    Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(1d);
    
  1. 创建 HttpCookie 类型的对象并为它分配名称。

  2. 为 Cookie 的子项赋值并设置所有 Cookie 属性。

  3. 将该 Cookie 添加到 Cookies 集合中。

    下面的代码示例演示一个名为 myCookie 的 HttpCookie 对象的实例,该实例表示一个名为 UserSettings 的 Cookie。

    Dim myCookie As HttpCookie = New HttpCookie("UserSettings")
    myCookie("Font") = "Arial"
    myCookie("Color") = "Blue"
    myCookie.Expires = Now.AddDays(1)
    Response.Cookies.Add(myCookie)
    
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie["Font"] = "Arial";
    myCookie["Color"] = "Blue";
    myCookie.Expires = DateTime.Now.AddDays(1d);
    Response.Cookies.Add(myCookie);
    

可靠编程

默认情况下,Cookie 由位于同一域中的所有页面共享,但可以通过设置 Cookie 的 Path 属性将 Cookie 限制在网站中的特定子文件夹。若要允许应用程序的所有文件夹中的所有页面都检索一个 Cookie,请从应用程序根文件夹中的页面设置该 Cookie,但不要设置 Path 属性。

如果不指定该 Cookie 的过期限制,则该 Cookie 将不会保留在客户端计算机上,当用户会话到期时该 Cookie 即到期。

Cookie 仅能存储 String 类型的值。在将任何非字符串值存储到 Cookie 中之前,必须将它们转换为字符串。对于多数数据类型而言,调用 ToString 方法即可。有关更多信息,请参见 ToString 方法以了解希望保持的数据类型。

安全性

不要在 Cookie 中存储敏感信息,如用户名或密码。有关 Cookie 安全性的更多信息,请参见 ASP.NET Cookie 概述

请参见

任务

如何:读取 Cookie

如何:删除 Cookie

概念

ASP.NET Cookie 概述

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

ASP.NET 状态管理概述