Sei sulla pagina 1di 4

7 - CGI (Common Gateway Interface), ejecución de

binarios.

Definición

Los cgi-bin son programas que se ejecutan en el servidor, pueden servir para tratar
información, como pasarela con una aplicación o base de datos o para generar
documentos html de forma automática.

Como se vió con anterioridad, una de las principales utilidades de los cgi-bin es
tratar los resultados de un formulario (FORM).

Estos programas pueden ser escritos en cualquier tipo de lenguaje de programación y


son ejecutados en el servidor cuando se realiza su referencia. Algo importante es que el
programa debe ser ejecutable en el servidor, por tanto al ser el servidor una maquina
UNIX, no se puede utilizar por ejemplo los compiladores de los PC, sino los del
servidor.

Los lenguajes más comunes para escribir estos programas son el lenguaje ˜erl, C ó
bien un —cript escrito en cualquier —  c— — — — .

Algo importante es que los cgi-bin deben tener una extensión especial .cgi, o bien,
encontarse en un directorio especial llamado cgi-bin. Cuando se referencie en una
pagina html un binario, cualquier fichero con la extensión cgi, en el servidor se
ejecutará este programa y la salida se enviará al cliente de la WWW.

Para que sea posible ejecutar el binario (cgi-bin), será necesario que el fichero tenga
los permisos de forma correcta, para ello tendrá que ejecutar en Unix el siguiente
comando:

www2> chmod 755 ˜rograma.cgi

Con esto el programa será ejecutable por el servidor.

Los cgi-bin se podrán escribir con las instrucciones normales del lenguaje de
programación pero hay ciertos aspectos a tener en cuenta:

1.c Variables de entorno


2.c Entrada de datos al cgi-bin
3.c Salida de datos del cgi-bin

Dariables de entorno
Para pasar datos el servidor al cgi-bin utiliza una serie de variables de entorno, que
quedan definidas al ejecutar el script. Las variables de entorno más interesantes son:

ac ¦   D

El método por el que se realiza la llamada al script, este puede ser GET o POST
como se explicó anteriormente cuando se habla de los formularios.

ac ^ INF

El cgi-bin puede ser llamado directamente desde el cliente, en esta variable se


incluirá toda la información que siga al nombre del cgi-bin, por ejemplo:

http://www2.uca.es/binarios/cgibin.cgi/camino/fichero

PATH_INFO = /camino/fichero

Será la información adicional que se añade tras el nombre de cgi-bin.

La información que se incluye será pasada de forma codificada al cgi-bin, de forma


que los espacios se convierten en signos '+' y los caracteres especiales se codifican de la
forma %xx, donde xx el código ASCII en hexadecimal del caracter. Esto debe ser tenido
en cuenta cuando se interprete la informació obtenida en formato URL.

ac ^ ¦ N  D

Una versión decodificada de PATH_INFO, obtiene el camino y lo convierte de


camino virtual (en referencia del servidor) a camino real (camino completo).

ac C¦I^N 

Nombre por el que fue llamado el cgi-bin.

ac  ¦
¦ING

La información que sigue al símbolo · en la URL que referencia al cgi-bin. Será


algún tipo de consulta que se realice al cgi-bin. No necesita ser decodificada de ninguna
manera.

Cuando se utiliza el método GET las variables del formulario se pueden interpretar
con esta variable de entorno.

El formato en que se envian estas variables es el siguiente:

· w   w  ... 


w 

ac ¦  

El ordenador desde el que se ejecuto el cgi-bin.


ac ¦   DD¦

Dirección IP del ordenador remoto que ejecuto el cgi-bin.

ac CN N NG

El número de caracteres enviados por el cliente al cgi-bin.

ac ^ ¦ G N

El cliente de la WWW que ejecuta el cgi-bin, el formato general es:

programa/vr—in ibrria/vr—in

El cgi-bin podría enviar un distinto código HTML según cada cliente.

ntrada de datos al cgi-bin

Para los formularios que utilizan el método POST, la información es enviada al cgi-
bin por la entrada estándar —tdin .

El servidor envía las variables de entorno CN N NG y


CN N
^ indicando la longitud y el tipo de datos enviados. El servidor no
esta obligado a enviar una marca de final de fichero tras los datos enviados, por tanto la
variable CN N NG debe ser tenida en cuenta para determinar la cantidad
de datos enviados. CN N
^ suele contener el valor appication/x-www-form-
urncodd, que indica que se trata de información con codificación URL.

En esta codificación como se vio antes los espacios se convierten en signos '+' y los
caracteres especiales se codifican de la forma %xx, donde xx el código ASCII en
hexadecimal del carácter. Por tanto esto debe ser tenido en cuenta cuando se interpreten
los datos enviados del formulario. Las variables del formulario se enviarán de la forma:

w   w  ... 


w 

alida de datos del cgi-bin

El cgi-bin debe enviar sus datos a la salida estándar (stdout), esta salida puede ser un
documento generado por el cgi-bin o instrucciones al servidor para obtener el
documento correcto.

La salida del cgi-bin debe comenzar con una pequeña cabecera que identificará al
documento. Las directivas que definen esta cabecera serán:

ac Content-ty˜e:

Es el tipo MIME del documento que se retorna. Si tuviera el valor txt/ tm la salida
se interpretaría como código html. Por tanto la salida del cgi-bin podría contener
instrucciones HTML que serian interpretadas correctamente por el cliente. Otros valores
que puede tomar son: txt/pain para texto normal ó imag/gif, la salida se interpreta
como una imagen GIF.

Por ejemplo:

˜  
  ˜

 

Sería el comienzo de la salida de cgi-bin escrito en C que comienza a generar código


html.

ac ocation:

Indicará al servidor que se esta enviado la referencia a un documento en lugar del


documento en sí. Si el valor es una URL, el servidor indicará al cliente que debe realizar
un redireccionamiento a esa dirección.

Esta permitido el uso de información adicional (PATH_INFO) y la directiva ?, pero


no la directiva # para indicar un punto determinado dentro de un documento.

ac tatus:

Indicará un código de estado para indicar errores. El formato será  ,


donde  es un número de tres dígitos y  es una cadena de caracteres.

Tras la cabecera se incluirán dos caracteres de retorno de carro (\n), siendo


obligatorio para que sea bien interpretada la cabecera de cgi-bin, si no se respeta esto la
salida del cgi-bin podría indicarnos el error "Server Error 500".

Despues de definida la cabecera se podrá generar la salida del cgi-bin, que se


interpretará segú el valor dado a ontnt-typ.

Potrebbero piacerti anche