scriptalias execcgi error enable configurar common perl http-headers cgi

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.