【发布时间】:2014-01-31 18:43:46
【问题描述】:
我正在使用 CGI.pm 来写出 cookie。现在,在用户使用我的网站的过程中,其他 cookie 被添加到“test.com”cookie 集中,(如浏览器历史记录所示)
但现在我想注销用户并“清理”PC。由于我不知道用户使用了哪些脚本,所以我无法预见 PC 上的 cookie 会是什么。
简而言之,它有一种方法可以将“test.com”的所有 cookie 读回脚本中,这样我就可以在 1 秒内再次打印出来(有效地“删除”它们)** 我知道你可以使用 $xyz=cookie('$name') 重新读取 cookie ...但是如何创建包含 $name 变量的数组以便循环遍历它?该脚本还将在“test.com”上运行,因此跨站点策略不是问题
+++++ brian d foy 在下面添加了部分答案。所以这就是我设想的代码可能被串在一起的方式。
use CGI::Cookie;
%cookies = CGI::Cookie->fetch;
for (keys %cookies) {
$del_cookie.="cookie(-NAME=>'$cookies[$_]',-PATH=>'/',-EXPIRES=>'+1s');";
}
print header(-cookie=>[$del_cookie]);
我想知道脚本如何识别域。似乎该脚本足够智能,可以仅加载正在执行该脚本的域的 cookie。 (现在我要找出为什么 Firefox 不删除过期的 cookie!刚刚在我的测试域中发现了一些在 1 月 29 日至 31 日过期的列表,起初我想知道为什么它们没有出现在我的 cookie 列表中! )
【问题讨论】: