2 minute read
5.1.3. La respuesta de un CGI
CONTENT_TYPE Tipo MIME del contenido de la petición, especialmente útil en peticiones POST.
CONTENT_LENGTH Tamaño del contenido especialmente útil en peticiones POST.
Advertisement
La mayoría de servidores web proveen además de la variable de entorno llamada QUERY_STRING , que contiene los datos de la petición si ésta ha sido de tipo GET o si hemos añadido datos a la URL. Algunos servidores web añaden datos extra al entorno. La mayoría de estas variables adicionales empiezan con HTTP_ para evitar conflictos con versiones posteriores del estándar.
Ejemplo Por ejemplo el servidor web Roxen añade una variable QUERY_ parámetro por cada parámetro de un formulario.
5.1.3. La respuesta de un CGI
Los CGI deben responder a las peticiones construyendo ellos mismos parte de la respuesta HTTP que recibirá el cliente. Es decir, deben indicar, en primer lugar, el tipo MIME del contenido que sirven. Pueden añadir posteriormente algunos campos adicionales (los especificados en el estándar HTTP). Después de una línea en blanco separadora, debe aparecer el contenido.
El CGI más simple posible, en este caso escrito en shell script y que enumera las variables de entorno comentadas anteriormente, es:
#!/bin/sh
echo Content-type: text/plain echo
echo
echo SERVER_NAME=$SERVER_NAME echo SERVER_PROTOCOL=$SERVER_PROTOCOL echo REQUEST_METHOD=$REQUEST_METHOD echo PATH_INFO=$PATH_INFO echo PATH_TRANSLATED=$PATH_TRANSLATED echo SCRIPT_NAME=$SCRIPT_NAME echo REMOTE_ADDR=$REMOTE_ADDR
echo REMOTE_HOST=$REMOTE_HOST echo REMOTE_USER=$REMOTE_USER echo AUTH_TYPE=$AUTH_TYPE echo CONTENT_TYPE=$CONTENT_TYPE echo CONTENT_LENGTH=$CONTENT_LENGTH echo QUERY_STRING=$QUERY_STRING
Como podemos ver en este ejemplo (la sintaxis utilizada de shell script es muy simple), para listar las variables de entorno recibidas enviamos el tipo de contenido, seguido de la línea en blanco obligatoria y de todas y cada una de las variables de entorno mencionadas.
La ejecución de este servidor, sin parámetros adicionales, resulta en:
Como podemos observar, si simplemente llamamos al CGI sin parámetros y no resulta su activación de un formulario, presenta pocas de las variables con valores. Si ahora llamamos al CGI pasándole
Figura 17.
parámetros y un PATH extra (fijaos en el directorio que hay detrás del nombre del CGI), el resultado es el siguiente:
Figura 18.
Decodificación del QUERY_STRING
Como hemos podido observar en los ejemplos anteriores, los parámetros enviados a nuestro CGI seguían una codificación concreta y muy especial. Uno de los inconvenientes de usar CGI frente a alternativas más modernas, como Servlets, reside en el hecho de que debemos realizar la decodificación y análisis de dicha cadena manualmente. Afortunadamente existen librerías para casi todos los lenguajes de programación destinadas a facilitarnos la tarea.
Las reglas de codificación son las siguientes:
• Se separa la lista de parámetros del resto de la dirección URL con el carácter ?
• Se separan los parámetros (que siempre van en pares nombre, valor) mediante el carácter &. En algunos casos se acepta el carácter ; como sustituto para la separación.