下面我将详细解释原理,并提供完整的易语言代码示例和ASP网页代码示例。

核心原理
Cookie 是存储在用户浏览器中的一小段文本信息,服务器可以通过 HTTP 响应头的 Set-Cookie 字段来创建、读取或修改客户端的 Cookie。
要删除一个 Cookie,我们不能直接从服务器“拿走”它,而是要告诉浏览器:“请把这个名字的 Cookie 删除掉”,具体做法是:
- 创建一个同名 Cookie:新 Cookie 的名称必须和你想要删除的那个 Cookie 的名称完全相同。
- 设置过期时间:将这个新 Cookie 的过期时间设置为一个过去的时间点(一天前)。
- 发送给客户端:服务器在响应页面时,将这个“过期”的 Cookie 信息通过
Set-Cookie头部发送给浏览器。 - 浏览器执行删除:浏览器接收到这个响应后,发现本地有一个同名且已过期的 Cookie,就会自动将其从用户的电脑上删除。
易语言实现方法(服务器端代码)
在易语言中,我们通常通过 程序集 调用 Windows 自带的组件(如 Scripting.FileSystemObject 或 ADODB.Stream)来操作文本文件,或者使用更高级的 易语言ASP支持库,但最直接的方式是编写 .asp 文件,并在其中嵌入易语言能理解的脚本逻辑(通常是 VBScript 或 JScript)。
下面是一个完整的 ASP 网页示例,这个示例可以直接保存为 .asp 文件(clear_cookie.asp),然后用 IIS 或其他 ASP 服务器环境运行。

clear_cookie.asp 文件内容
<%@ Language=VBScript %>
<%
' --- 清除 Cookie 的子程序 ---
' 参数:
' cookieName - 要清除的 Cookie 的名称
Sub ClearCookie(cookieName)
' 1. 创建一个同名的 Cookie
Response.Cookies(cookieName) = ""
' 2. 设置其过期时间为过去的时间点
' 这里设置为 1999 年 1 月 1 日,确保它一定已经过期
Response.Cookies(cookieName).Expires = #January 01, 1999#
' 可选:设置路径,确保能删除指定路径下的 Cookie
' 如果创建 Cookie 时设置了路径,这里也必须设置相同的路径才能删除
' Response.Cookies(cookieName).Path = "/"
' 可选:设置域,Cookie 是跨域的
' Response.Cookies(cookieName).Domain = ".yourdomain.com"
End Sub
' --- 主程序逻辑 ---
' 调用子程序,清除名为 "MyUserInfo" 的 Cookie
Call ClearCookie("MyUserInfo")
' 调用子程序,清除名为 "UserPreferences" 的 Cookie
Call ClearCookie("UserPreferences")
' 向客户端输出一个提示信息,告诉用户 Cookie 已被清除
%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">清除 Cookie</title>
<style>
body { font-family: 'Microsoft YaHei', Arial, sans-serif; text-align: center; margin-top: 50px; }
h1 { color: #333; }
p { color: #666; font-size: 1.2em; }
.success { color: #28a745; font-weight: bold; }
</style>
</head>
<body>
<h1>Cookie 清除成功</h1>
<p class="success">
您的 "MyUserInfo" 和 "UserPreferences" Cookie 已被成功清除。
</p>
<p>
请刷新页面或检查您的浏览器设置来确认。
</p>
</body>
</html>
代码解释:
<%@ Language=VBScript %>:声明本页面使用 VBScript 语言。<% ... %>:这是 ASP 的脚本定界符,里面的代码在服务器端执行。Sub ClearCookie(cookieName):定义一个清除 Cookie 的子程序,接收一个参数cookieName(要删除的 Cookie 名)。Response.Cookies(cookieName) = "":创建一个名为cookieName的 Cookie,并将其值设为空字符串。Response.Cookies(cookieName).Expires = #January 01, 1999#:这是最关键的一步,将这个 Cookie 的过期时间设置为一个遥远的过去日期,浏览器看到这个设置,就知道这个 Cookie 已经无效,应该被删除。Call ClearCookie("MyUserInfo"):调用子程序,传入要删除的 Cookie 名称。- 下面的
<!DOCTYPE html> ... </html>部分是标准的 HTML 代码,用于向用户显示一个友好的提示页面,这部分代码在服务器端执行完毕后,连同前面生成的Set-Cookie头信息一起发送给浏览器。
如何测试
-
准备工作:你需要一个支持 ASP 的 Web 服务器环境,最常见的是 IIS (Internet Information Services),如果你是 Windows 用户,可以开启 Windows 功能中的 "IIS"。
-
放置文件:将上面的代码保存为
clear_cookie.asp文件,并将其放入你的 IIS 网站根目录(通常是C:\inetpub\wwwroot\)。 -
设置一个 Cookie:为了测试,你需要先有一个 Cookie,你可以创建另一个 ASP 文件(
set_cookie.asp)来设置一个 Cookie。set_cookie.asp示例:
(图片来源网络,侵删)<%@ Language=VBScript %> <% ' 设置一个名为 "MyUserInfo" 的 Cookie,值为 "some_data",有效期 1 天 Response.Cookies("MyUserInfo") = "some_data" Response.Cookies("MyUserInfo").Expires = Date() + 1 %> <!DOCTYPE html> <html> <head><title>设置 Cookie</title></head> <body> <h1>Cookie 已设置</h1> <p>名为 "MyUserInfo" 的 Cookie 已被设置,有效期1天。</p> <a href="clear_cookie.asp">点击这里清除 Cookie</a> </body> </html> -
测试流程:
- 在浏览器中访问
http://localhost/set_cookie.asp。 - 打开浏览器的开发者工具(F12),切换到 "Application" (或 "存储") -> "Cookies" ->
http://localhost,你应该能看到MyUserInfo这个 Cookie。 - 然后点击页面上的链接,访问
http://localhost/clear_cookie.asp。 - 页面会显示“清除成功”的提示。
- 再次检查开发者工具,你会发现
MyUserInfo这个 Cookie 已经消失了,证明它被成功清除了。
- 在浏览器中访问
易语言本地程序调用 ASP 页面(高级用法)
如果你想在易语言的本地程序(.exe)中,通过代码触发服务器端的 Cookie 清除操作,你可以使用 互联网支持库 或 wininet 等组件来向 clear_cookie.asp 发送一个 HTTP 请求。
易语言代码示例:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 hInternet, 整数型
.局部变量 hConnect, 整数型
.局部变量 hRequest, 整数型
.局部变量 bResult, 逻辑型
' --- 1. 初始化 Wininet ---
hInternet = InternetOpenA ("MyCookieClearer", 1, , , 0)
hInternet = 0
.如果真 (hInternet = 0)
信息框 (“初始化 Wininet 失败!”, 0, , )
返回 ()
.如果结束
' --- 2. 连接到服务器 ---
' 请替换成你的服务器地址
hConnect = InternetConnectA (hInternet, "localhost", 80, , , 3, 0, 1)
.如果真 (hConnect = 0)
信息框 (“连接服务器失败!”, 0, , )
InternetCloseHandle (hInternet)
返回 ()
.如果结束
' --- 3. 打开请求 ---
' 请替换成你的 .asp 文件路径
hRequest = HttpOpenRequestA (hConnect, "GET", "/clear_cookie.asp", "HTTP/1.1", , , 0, 0)
.如果真 (hRequest = 0)
信息框 (“打开请求失败!”, 0, , )
InternetCloseHandle (hConnect)
InternetCloseHandle (hInternet)
返回 ()
.如果结束
' --- 4. 发送请求 ---
bResult = HttpSendRequestA (hRequest, , 0, , 0)
.如果真 (bResult = 0)
信息框 (“发送请求失败!”, 0, , )
InternetCloseHandle (hRequest)
InternetCloseHandle (hConnect)
InternetCloseHandle (hInternet)
返回 ()
.如果结束
' --- 5. 关闭句柄 ---
InternetCloseHandle (hRequest)
InternetCloseHandle (hConnect)
InternetCloseHandle (hInternet)
信息框 (“已向服务器发送清除Cookie的请求!”, 0, , )
.结束程序集
说明:
- 这段易语言代码模拟了浏览器访问
clear_cookie.asp的过程。 - 当你运行这个易语言程序时,它会向
http://localhost/clear_cookie.asp发送一个GET请求。 - 服务器端的
clear_cookie.asp文件被执行,从而清除指定的 Cookie。 - 这种方法适用于需要自动化操作的场景,例如在程序退出时自动清理登录状态。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 直接访问 ASP 页面 | 简单直接,易于测试和理解 | 需要用户手动点击或跳转 | 网站内的“退出登录”、“清除缓存”等功能按钮。 |
| 易语言程序调用 ASP | 实现自动化,无需用户干预 | 代码稍复杂,需要处理网络连接 | 桌面程序需要与 Web 服务交互,并在交互完成后清理服务器端的会话状态。 |
对于绝大多数 ASP 开发需求,直接使用第一种方法(编写 .asp 文件)就足够了,第二种方法是第一种在客户端程序中的延伸应用。
