perl:firefox拒绝我的cookie?

时间:2014-12-24 16:15:53

标签: perl firefox cookies

我在�://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?

1 个答案:

答案 0 :(得分:1)

网址的路径组件是

/homeworks/hw10/testcookie.cgi

但您正在尝试为

设置Cookie
/hw10/testcookie.cgi

后者不包含在前者中,所以这是一个错误。您可能想要使用

-path => $cgi->url( -absolute => 1 )

而不是

-path => '/hw10/testcookie.cgi'

这可能不是唯一的错误。您没有提供所请求的网址,因此我不知道您是否使用了HTTP或HTTPS。如果您使用HTTP,则会遇到问题,因为您指定的Cookie只应通过安全连接提供。