我在�://192.168.1.3/homeworks/hw10/testcookie.cgi
处有以下脚本:
#!/usr/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use CGI::Cookie qw(cookie);
use strict;
use warnings;
sub makecookie {
return my $cookie = cookie(-name=>'hw10',
-value=>shift,
-expires=>shift,
-path=>'/hw10/testcookie.cgi',
-domain=>'192.168.1.3',
-secure=>1);
}
my $cgi = CGI->new();
my $cookie = makecookie("192.168.1.3",'+3d');
print STDOUT $cgi->header(-cookie=>$cookie);
print STDOUT $cgi->start_html("Test Cookie");
print STDOUT "<h1>TEST</h1>";
print STDOUT $cgi->end_html();
我使用Live标头检查了发送的内容:
GET /homeworks/hw10/testcookie.cgi HTTP/1.1
Host: 192.168.1.3
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 24 Dec 2014 16:11:24 GMT
Server: Apache/2.2.22 (Debian)
Set-Cookie: hw10=192.168.1.3; domain=192.168.1.3; path=/hw10/testcookie.cgi; expires=Sat, 27-Dec-2014 16:11:24 GMT; secure
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 258
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=ISO-8859-1
----------------------------------------------------------
但firefox表示该网站没有关联的cookie。为什么firefox拒绝cookie?
答案 0 :(得分:1)
网址的路径组件是
/homeworks/hw10/testcookie.cgi
但您正在尝试为
设置Cookie/hw10/testcookie.cgi
后者不包含在前者中,所以这是一个错误。您可能想要使用
-path => $cgi->url( -absolute => 1 )
而不是
-path => '/hw10/testcookie.cgi'
这可能不是唯一的错误。您没有提供所请求的网址,因此我不知道您是否使用了HTTP或HTTPS。如果您使用HTTP,则会遇到问题,因为您指定的Cookie只应通过安全连接提供。