Perl脚本没有在谷歌浏览器上保存cookie?

时间:2013-04-26 15:39:54

标签: perl google-chrome cookies

我正在尝试使用Perl学习使用Cookie。以下是我的代码。但我不知道为什么cookie没有被保存在chrome中。每次我运行这个脚本时都会创建一个新的cookie。

#!"C:\wamp\perl\bin\perl.exe" -w
print "Content-type: text/html\n\n";
use CGI::Carp qw( fatalsToBrowser );
use CGI;

my $q=new CGI;
$value=$q->cookie('lol');

$cookie=$q->cookie
(
-name=>'lol',
-value=>'gh',
-expires=>'+7d'
);

print $q->header(-cookie=>$cookie);

$q->start_html
(
-title=>'CGI.pm Cookies'
);

unless($value) {print "cookie is goint to set";}
else {print "Hi $value";}

$q->end_html;
exit;

2 个答案:

答案 0 :(得分:2)

您忘记将Cookie发送给客户:

print header(-cookie=>$cookie);

答案 1 :(得分:1)

以下是脚本的输出:

Content-type: text/html

Set-Cookie: lol=gh; path=/; expires=Sat, 04-May-2013 11:16:12 GMT
Date: Sat, 27 Apr 2013 11:16:12 GMT
Content-Type: text/html; charset=ISO-8859-1

cookie is goint to set

您发送Content-Type响应标题两次:第一行,第2行,第16行再次打印$q->header(-cookie => $cookie)

实际上,第2行的双重换行结束了您的HTTP标头。因此,$q->header(-cookie => $cookie)的输出将被视为文档正文内容,将被视为HTTP标头。

最快的解决方案? 评论第2行