perl - execcgi - ¿Cómo accedo al encabezado HTTP de la solicitud en un script CGI?
configurar cgi-bin apache (3)
He usado Perl un poco para aplicaciones pequeñas y código de prueba, pero soy nuevo en redes y CGI.
Recibo cómo hacer el encabezado de una solicitud (utilizando CGI.pm e imprimiendo los resultados de la función header ()), pero no he podido encontrar ninguna información sobre cómo acceder a los encabezados que se envían a mi script CGI. ¿Podría alguien apuntarme en la dirección correcta?
Esto podría ser de una solicitud como esta:
curl http://127.0.0.1:80/cgi-bin/headers.cgi -H "HeaderAttribute: value"
Además del CGI.pm http()
, puede obtener información de encabezados HTTP de las variables de entorno.
Entonces, en caso de que estés usando algo como CGI::Minimal , que no tiene el método http. puedes hacer algo como:
my $header = ''HTTP_X_REQUESTED_WITH'';
if (exists $ENV{$header} && lc $ENV{$header} eq ''xmlhttprequest'') {
_do_some_ajaxian_stuff();
}
El módulo CGI tiene una función http()
que puede utilizar para ese propósito:
#!/usr/bin/perl --
use strict;
use warnings;
use CGI;
my $q = CGI->new;
my %headers = map { $_ => $q->http($_) } $q->http();
print $q->header(''text/plain'');
print "Got the following headers:/n";
for my $header ( keys %headers ) {
print "$header: $headers{$header}/n";
}
Pruébalo; lo anterior me da:
$ curl http://localhost/test.cgi -H "HeaderAttribute: value"
Got the following headers:
HTTP_HEADERATTRIBUTE: value
HTTP_ACCEPT: */*
HTTP_HOST: localhost
HTTP_USER_AGENT: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
Se suministran como variables de entorno, tales como
HTTP_HEADERATTRIBUTE=value
Sin embargo, es posible que tenga que hacer algo para configurar su servidor web para suministrar dicha variable.