J'ai une application CGI Perl que je veux prendre les en-têtes de requête des utilisateurs, et les transformer en une requête get LWP :: UserAgent. Fondamentalement, l'objectif est de répliquer les en-têtes des utilisateurs entrants et de les utiliser pour faire une demande séparée.Cloner les en-têtes de requête dans Vanilla Perl CGI à LWP UserAgent
J'ai essayé de créer les en-têtes moi-même mais lorsque j'essaie d'afficher les en-têtes CGI et ensuite les en-têtes UserAgent de mon clone, ils ne sont pas exactement les mêmes. Voici ce que je suis:
my $cgi = new CGI; my %headers = map { $_ => $cgi->http($_) } $cgi->http; my $req_headers = HTTP::Headers->new(%headers); my $ua = LWP::UserAgent->new(default_headers => $req_headers); print Dumper $ua->default_headers;
Fondamentalement, les en-têtes de% et UA- $> default_headers ne sont pas identiques. $ ua-> default_headers a un agent qui s'identifie comme un script Perl. Je peux définir manuellement $ ua-> agent ("") mais il y a d'autres imperfections et les en-têtes ne sont pas identiques.
Quelle est la meilleure façon de faire ce que je veux? Il doit y avoir une solution plus facile ...
Je ne comprends pas ta question. Les en-têtes HTTP ne sont pas disponibles pour un script CGI. Les en-têtes HTTP sont analysés dans des variables d'environnement et envoyés au script CGI après le filtrage. En outre, CGI ne semble pas avoir une méthode documentée 'http', et la deuxième ligne semble manquer une' map'. –
Peut-être que je ne suis pas en train de formuler ma question correctement ... http://cpansearch.perl.org/src/LDS/CGI.pm-3.49/cgi_docs.html Rechercher "-> http". Cela me donne une liste des en-têtes de la demande, n'est-ce pas? Voir aussi http://www.perlmonks.org/?node_id=838453 – Zach
Avez-vous vu le commentaire de Kinopiko sur l'utilisation du mot-clé 'map' sur la ligne 2? – mob