如何:删除 Cookie

更新:2007 年 11 月

不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。

ms178195.alert_note(zh-cn,VS.90).gif说明:

调用 Cookies 集合的 Remove 方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则该方法无法从客户端将其移除。

  1. 确定 Cookie 是否存在,如果存在则创建同名的新 Cookie。

  2. 将 Cookie 的到期日期设置为过去的某一时间。

  3. 将 Cookie 添加到 Cookies 集合对象。

    下面的代码示例演示如何为 Cookie 设置已过去的到期日期。

    If (Not Request.Cookies("UserPreferences1") Is Nothing) Then
        Dim myCookie As HttpCookie
        myCookie = New HttpCookie("UserPreferences1")
        myCookie.Expires = DateTime.Now.AddDays(-1D)
        Response.Cookies.Add(myCookie)
    End If
    
    if (Request.Cookies["UserSettings"] != null)
    {
        HttpCookie myCookie = new HttpCookie("UserSettings");
        myCookie.Expires = DateTime.Now.AddDays(-1d);
        Response.Cookies.Add(myCookie);
    }
    

编译代码

此示例需要:

  • 一个 ASP.NET 网页。

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

可靠编程

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

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

安全性

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

请参见

任务

如何:编写 Cookie

如何:读取 Cookie

概念

ASP.NET Cookie 概述

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

ASP.NET 状态管理概述