Perl cookie问题

时间:2011-05-14 08:43:21

标签: perl cookies

我在perl上写了一个http会话管理器,会话管理器必须向用户浏览器写cookie,当我在firefox 4上测试它时,它工作正常,并且cookie被写入浏览器,chrome和IE似乎拒绝饼干由于某种原因,我做了一个invistagation但没有用,我的饼干看起来像这样:

设置 - Cookie:session=nSwbgFp5suScOMjmDMVNxv4EQLJpDat7YanRJGfM3hrvbjCCprUvocU4HxiR4Tk_VUAV6hE68zlriRvX0CeC4Ytk1DJc8IhCn_4C;expires=Sat, 14-May-2011 10:10:56 GMT

我注意到的一些事情,如果我将Cookie配置为在1天后过期。它适用于所有浏览器,但一小时它不适用于IE和Chrome。 如果有人知道如何在IE或Chrome中嗅探cookie,请告诉我。我不是指使用网络嗅探器。因为我确信cookie会被发送到浏览器。我的意思是与浏览器有关的东西。

提前感谢。


my ($key, $value) = @_;
my (@cookies, $k, $v, $r, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
my @chars = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '_');
my @weekday = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
my @month = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
$r = '';
foreach (1 .. 100) {$r .= $chars[rand @chars]}
## Calculate the expiration date of the session
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time() + $::session_life);
$year = $year + 1900;
$mon  = $month[$mon];
$wday = $weekday[$wday];

## Generate cookies
print("Set-Cookie:$::session_cookie_name=$r;" . "expires=$wday, $mday-$mon-$year $hour:$min:$sec GMT;\n");

1 个答案:

答案 0 :(得分:0)

  • 在Chromium中,菜单→工具→开发人员工具(Ctrl + Shift + I)。
  • 在Opera中,菜单→页面→开发人员工具→Dragonfly(Ctrl + Shift + I)。
  • 对于Internet Explorer,请参阅Developer Toolbar

时间计算错误。使用库CGI::Cookie生成符合标准的cookie标头。

use CGI qw();
use CGI::Cookie qw();

my $cgi                 = CGI->new;
my $session_cookie_name = …;
my $r                   = …;

print $cgi->header(
    -type   => 'text/plain',
    -cookie => CGI::Cookie->new(
        -name    => $session_cookie_name,
        -value   => $r,
        -expires => '+2h',
    ),
);