Perl cookie проблема - PullRequest
2 голосов
/ 14 мая 2011

Я написал менеджер сессий http на Perl, менеджер сессий должен записывать куки в браузер пользователя, когда я тестирую его на Firefox 4, он работает нормально, и куки записываются в браузер, Chrome и IE, похоже, отклоняют куки-файлы по какой-то причине я сделал invistagation, но бесполезно, мои куки выглядят так:

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

Что-то, что я заметил, если я настрою срок действия файлов cookie через 1 день. это работает для всех браузеров, но час не будет работать для IE и Chrome. Если у кого-то есть идея о том, как прослушать куки в IE или chrome, дайте мне знать. Я не имею в виду использование сетевого анализатора. Так как я уверен, что куки отправляются в браузер. Что я имею ввиду, что-то связано с браузерами.

спасибо заранее.


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 голосов
/ 14 мая 2011
  • В Chromium, Меню → Инструменты → Инструменты разработчика (Ctrl + Shift + I).
  • В Opera, Меню → Страница → Инструменты разработчика → Dragonfly (Ctrl + Shift + I).
  • Для Internet Explorer см. Панель инструментов разработчика .

Неправильный расчет времени.Используйте библиотеку 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',
    ),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...