我正在尝试使用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;
答案 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行。