Perl 为什么我无法在CGI脚本中获取cookie?

Perl 为什么我无法在CGI脚本中获取cookie?,perl,cookies,Perl,Cookies,我正在CGI脚本中设置cookie并尝试读取它,但读取失败。这可能是什么原因造成的 这是我的剧本: use strict; use warnings; use CGI; use CGI::Cookie; use CGI qw/:standard/; use CGI; my $cgi = new CGI; my $cookie1 = $cgi->cookie( -name => 'ID', -value => 123456 ); my $cookie2 = $cgi-&g

我正在CGI脚本中设置cookie并尝试读取它,但读取失败。这可能是什么原因造成的

这是我的剧本:

use strict;
use warnings;
use CGI;
use CGI::Cookie;
use CGI qw/:standard/;

use CGI;
my $cgi = new CGI;

my $cookie1 = $cgi->cookie( -name => 'ID',   -value => 123456 );
my $cookie2 = $cgi->cookie( -name => 'NAME', -value => 'ABCDEF' );

print "Cookies:\n" . header( -cookie => [ $cookie1, $cookie2 ] );

my $id   = $cgi->cookie('ID')   || 'No ID cookie';
my $name = $cgi->cookie('NAME') || 'No Name cookie';

print "ID-Cookie :$id\n";
print "Name-Cookie :$name\n";
my %cookies = CGI::Cookie->fetch;

my $count = 0;
for ( keys %cookies ) {
    $count++;
    print "Cookie[$count]: $cookies{$_}\n";
}
print "Total cookies: $count\n";
输出:

Cookies:
Set-Cookie: ID=123456; path=/
Set-Cookie: NAME=ABCDEF; path=/
Date: Thu, 09 Oct 2014 19:05:55 GMT
Content-Type: text/html; charset=ISO-8859-1

ID-Cookie :No ID cookie
Name-Cookie :No Name cookie
Total cookies: 0

我还尝试了
$cookies{'ID'}->value
。这也不起作用。

我不确定您是否正确设置了cookie。尝试:

use strict;
use warnings; 

use CGI qw/:standard/;
use CGI::Cookie;

my $cookie1 = CGI::Cookie->new(-name => 'ID',-value=>123456);
my $cookie2 = CGI::Cookie->new(-name => 'NAME',-value=>'ABCDEF');

查看文档以了解更多信息

cookie是提供给web浏览器的字符串,它将在将来的请求中返回给web服务器,但看起来不像您使用了浏览器。看起来你甚至没有把脚本作为CGI脚本来执行

脚本创建一个HTTP头(纯粹出于运气,根据
Cookies:
位判断),该头指示浏览器设置一些Cookies,然后显示收到的Cookies

当浏览器第一次获取此页面时,它会指示浏览器设置两个cookie,并且没有获取任何cookie

浏览器第二次获取此页面时,会指示浏览器设置两个cookie,并从浏览器接收两个cookie

简体字:

use strict;
use warnings;

use CGI qw/:standard/;

my $cgi = CGI->new;

my $cookie1 = $cgi->cookie( -name => 'ID',   -value => 123456 );
my $cookie2 = $cgi->cookie( -name => 'NAME', -value => 'ABCDEF' );

print header( -type => 'text/plain', -cookie => [ $cookie1, $cookie2 ] );

my $id   = $cgi->cookie('ID')   || 'No ID cookie';
my $name = $cgi->cookie('NAME') || 'No Name cookie';

print "ID-Cookie: $id\n";
print "Name-Cookie: $name\n";