J'utilise mod_perl 2 avec Apache 2.2.3 sur Red Hat 5.2, et j'essaie d'accéder aux en-têtes de requête, mais la méthode Apache2 :: RequestRec headers_in (ou plutôt, sa valeur de retour) ne se comporte pas comme je m'attendrais.mod_perl headers_in ne fonctionne pas
fragment de code:
$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);
donne la sortie du journal suivant:
WARN version 2.000004
WARN r Apache2::RequestRec=SCALAR(0x2ae0598e9ef0)
WARN headers APR::Table=HASH(0x2ae06cad15a0)
avec l'exécution paraissant arrêter dès que tout accès à l'APR :: Table est essayée. L'interface liée à la PEE :: Table a le même effet - à savoir changer la ligne get('Accept')
à:
my $accept = $headers->{Accept};
donne exactement la même sortie du journal.
Selon la documentation liée ci-dessus:
Ce tableau est disponible à partir de la phase PerlHeaderParserHandler
Je me attends à mon code, en cours d'exécution dans la phase PerlResponseHandler, pour être en mesure d'accéder les en-têtes.
Est-ce que quelqu'un a des idées de ce que je fais mal?
Éditer: L'utilisation de données :: Dumper n'a pas vraiment clarifié les choses du tout.
code:
use Data::Dumper;
$logger->warn(Dumper($r));
my $headers = $r->headers_in;
$logger->warn($headers);
$logger->warn(Dumper($headers));
$logger->warn('have dumped $headers');
Sortie:
WARN $VAR1 = bless(do{\(my $o = '47143456365192')}, 'Apache2::RequestRec');
WARN APR::Table=HASH(0x2ae071b06fd0)
Il semble donc que d'essayer d'entrer dans les en-têtes $, même par le biais de données :: résultats tombereau dans l'arrêt d'exécution.
Modifier: La tentative de définition de l'un des en-têtes échoue également.
$logger->warn('reset accept');
$r->headers_in->{'Accept'}= 'everything';
$logger->warn('post set accept');
butées sortie connectent au point
WARN reset accept
. J'ai aussi essayé l'alternative set(Accept => 'everything')
, avec le même résultat.
Que contient l'objet $ headers? Pouvez-vous montrer une sortie Data :: Dumper? –