如何:删除 Cookie
更新:2007 年 11 月
不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。
说明: |
---|
调用 Cookies 集合的 Remove 方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则该方法无法从客户端将其移除。 |
向 Cookie 分配已过去的到期日期
确定 Cookie 是否存在,如果存在则创建同名的新 Cookie。
将 Cookie 的到期日期设置为过去的某一时间。
将 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 应用程序中防止脚本侵入。