Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl检查Cookie_Perl_Http_Cookies - Fatal编程技术网

使用Perl检查Cookie

使用Perl检查Cookie,perl,http,cookies,Perl,Http,Cookies,我编写了一个简短的Perl脚本,列出了网站的当前cookie,但不知怎么的,它报告了cookie的域和过期为空我做错了什么,还是我误解了饼干背后的机制? 我的最终目标是能够用一个按钮删除现有的cookies 该脚本是实时的,但如果您访问我的第一个脚本,它可能会有所帮助,因此实际上设置了一些cookies。以下是我的源代码: use warnings; use strict; use CGI::Cookie; my $table; my %cookies = CGI::Cookie->fe

我编写了一个简短的Perl脚本,列出了网站的当前cookie,但不知怎么的,它报告了cookie的
过期
为空我做错了什么,还是我误解了饼干背后的机制?

我的最终目标是能够用一个按钮删除现有的cookies

该脚本是实时的,但如果您访问我的第一个脚本,它可能会有所帮助,因此实际上设置了一些cookies。以下是我的源代码:

use warnings;
use strict;
use CGI::Cookie;

my $table;
my %cookies = CGI::Cookie->fetch;
if ( keys %cookies ) {
        $table .= "<table border=\"3\" cellpadding=\"5\">";
        $table .= "<caption>COOKIES</caption>";
        $table .= "<tr><th>Name</th><th>Domain</th><th>Path</th><th>Expires</th>
                   <th align=\"left\">Value</th></tr>";
        foreach my $cookie ( keys %cookies ) {
                $table .= "<tr>";
                $table .= "<td>$cookie</td>";
                $table .= "<td>" . $cookies{ $cookie }->domain() . "</td>";
                $table .= "<td>" . $cookies{ $cookie }->path . "</td>";
                $table .= "<td>" . $cookies{ $cookie }->expires . "</td>";
                $table .= "<td>" . $cookies{ $cookie }->value . "</td>";
                $table .= "</tr>";
        }
        $table .= "</table>";
}

print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head></head>\n";
print "<body>\n";
print "$table";
print "</body>\n";
print "</html>\n";

浏览器不会向服务器提供有关其发送的cookie的任何元信息。他们甚至没有办法发送它。浏览器发送的内容如下所示:

Cookie: a=b; c=d; e=f

要扩展@ikegami的答案,程序可以在
过期
字段中设置cookie,客户端将在决定将哪些cookie发送回服务器时使用该信息。但是这些信息并没有被发送回来,只有名称和值被发送回来。我想我的想法就是创建一个脚本,在这个脚本中我可以删除cookies。我可以从javascript中访问域信息吗(比如说,是否值得用谷歌搜索呢?),因为这确实是实现我目标所缺少的链接。我不知道。可能,但仅适用于包含JS的文档的域和路径的cookie。您不能从其他域删除cookie,因为客户端不会将它们发送回您的脚本。您不能使用JavaScript操作来自其他域的cookie,因为JavaScript环境将强制执行。你到底想做什么?它们是帮助你管理cookie的浏览器插件(例如FF的“Web开发者”允许查看/添加/删除)
Cookie: a=b; c=d; e=f