Почему не работает мой заголовок Refresh? - PullRequest
2 голосов
/ 01 ноября 2009

Я работаю над домашним заданием в Perl CGI, используя модуль CGI.pm. В моем коде я проверяю наличие cookie. Если cookie существует, я хочу запустить другой CGI-скрипт. В других ситуациях я мог использовать подобный код, но в этом случае я просто получаю следующий вывод из браузера, а не перенаправление, которое я искал.

Refresh: 1; URL=homepage.pl.cgi
Content-Type: text/html; charset=ISO-8859-1

Вот мой код:

#get the cookie
my %SIDhash = cookie('SIDhash');

if ( exists $SIDhash{"SID"} ) {
    print header(-refresh=>'0; homepage.pl.cgi');
}

Какие основы я не понимаю здесь?

Спасибо, CB

Ответы [ 3 ]

1 голос
/ 01 ноября 2009

Это должно сработать:

print header(
    -refresh => '0; url=homepage.pl.cgi',
    -cookie => $cookie,
);

Если вы собираете заголовок по частям, в разных местах кода, сначала сохраните компоненты заголовка в переменной, например ::

my %headers;

# later...
$headers{-cookie} = $cookie;

# later still:
if (exists $SIDhash{SID})
{
    # we want to redirect, so print all headers and we're done.
    print header(%headers, -refresh => '0; url=homepage.pl.cgi');
    exit;
}

# if we're still here, nothing is printed yet.. continue preparing data and print when ready.
# ...
0 голосов
/ 01 ноября 2009

Я не уверен, почему ваше обновление не работает, но похоже, что было бы более целесообразно использовать:

HTTP/1.1 302 Found
Location: http://www.example.org/

Просто мысль.

0 голосов
/ 01 ноября 2009

Попробуйте изменить строку на

print header(-refresh=>'0; url=homepage.pl.cgi');

Из того, что я могу сказать, это должно быть правильно сейчас.

Эта страница в Википедии предлагает информацию об обновлении и других методах перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...