Я использую mod_perl 2 с Apache 2.2.3 в Red Hat 5.2, и я пытаюсь получить доступ к заголовкам запроса, но метод Apache2 :: RequestRec headers_in (вернее, его возвращаемое значение) не ведет себя так, как я ожидал.mod_perl headers_in не работает
фрагмент кода:
$logger->warn('version ' . $mod_perl::VERSION);
$logger->warn('r ' . $r);
my $headers = $r->headers_in;
$logger->warn('headers ' . $headers);
my $accept = $headers->get('Accept');
$logger->warn('got $accept');
$logger->warn($accept);
дает следующий вывод журнала:
WARN version 2.000004
WARN r Apache2::RequestRec=SCALAR(0x2ae0598e9ef0)
WARN headers APR::Table=HASH(0x2ae06cad15a0)
с исполнением появляющейся, чтобы остановить, как только любой доступ к АПР :: Стола попытку. привязанного интерфейса для APR :: Таблица был один и тот же эффект - то есть изменение get('Accept')
строку:
my $accept = $headers->{Accept};
дает точно такой же вывод журнала.
Согласно приведенной выше связанной документации:
Эта таблица доступна, начиная с PerlHeaderParserHandler фазы
Так что я бы ожидать, мой код, работающий в PerlResponseHandler фазе, чтобы иметь возможность доступа заголовки.
Есть ли у кого-нибудь идеи, что я делаю неправильно?
Редактировать: Использование данных :: Самосвал на самом деле не прояснил ситуацию.
Код:
use Data::Dumper;
$logger->warn(Dumper($r));
my $headers = $r->headers_in;
$logger->warn($headers);
$logger->warn(Dumper($headers));
$logger->warn('have dumped $headers');
Выход:
WARN $VAR1 = bless(do{\(my $o = '47143456365192')}, 'Apache2::RequestRec');
WARN APR::Table=HASH(0x2ae071b06fd0)
Таким образом, кажется, что пытается получить в $ заголовки даже через Data :: Dumper приводит к выполнению приостановку.
Редактировать: Попытка установить один из заголовков также не работает.
$logger->warn('reset accept');
$r->headers_in->{'Accept'}= 'everything';
$logger->warn('post set accept');
остановки войти выход в точке
WARN reset accept
. Я также попробовал вариант set(Accept => 'everything')
, с тем же результатом.
Что находится в объекте $ headers? Вы можете показать какой-то вывод Data :: Dumper? –