Publicado el 19 de Abril del 2018
723 visualizaciones desde el 19 de Abril del 2018
63,3 KB
25 paginas
Creado hace 23a (17/01/2001)
TUTORIAL
DE
CGI
Tutorial de CGI http://www.cybercursos.net
INTRODUCCIÓN
El CGI (Common Gateway Interface) es un estandar para comunicar aplicaciones
externas con los servidores de información, tales como servidores HTTP o Web. Un
documento en HTML que el daemon del Web se trae es estático, es decir, se mantiene
constante: un fichero de texto que no cambia. Un programa CGI, por otro lado es ejecutado
en tiempo real, así que puede generar información dinámica.
Por ejemplo, supongamos que quieres enganchar tu base de datos de Unix al WWW,
para permitir a gente de todo el mundo consultarla. Básicamente se necesitará un programa
CGI que el daemon del Web ejecutará para transmitir la información al gestor de base de
datos, y recibir los resultados para presentarselos al cliente. Este es un ejemplo de pasarela
(gateway), y es lo que CGI, actualmente en su versión 1.1, tiene en sus orígenes.
El ejemplo de la base de datos es una idea sencilla, pero la mayoría de las veces dificil
de implementar. Realmente no hay límite con lo que tu quieras enganchar al Web. La íunica
cosa que debes recordar es que haga lo que haga tu progrma CGI, no deberá tardar mucho
tiempo en procesar. De otra manera, el usuario estaría esperando con su navegador a que
algo pase.
Especificaciones
Como un programa CGI es un ejecutable, es equivalente a dejar a el mundo ejecutar
un programa en tu sistema, que no es lo mas seguro a hacer. Por ello existen una serie de
precauciones de seguridad que son necesarias de implementar cuando se usan programas
CGI. Probablemente la que afectará al usuario típico del Web, es que hecho de que los
programas CGI necesitan residir en un directorio especial, así el servidor sabe que tiene que
ejecutarlo, en vez de simplemente mostrarlo por pantalla. Este directorio está generalmente
bajo el control del webmaster, prohibiendo al usuario medio crear programas CGI. Hay otros
métodos para permitir el accesos a scripts CGI, pero depende del webmaster que se te de
esta posibilidad. Así que deberás contactar con tu webmaster para consultar la factibilidad de
permitirte un acceso a los CGI.
Si dispones de una versión del servidor HTTPd NCSA, verás un directorio
denominado /cgi-bin. Este es el directorio especial antes mencionado, donde todos los
programas CGI residen. Un programa CGI se puede escribir en cualquier lenguaje que
permita ser ejecutado en el sistema, como:
C/C++
Fortran
PERL
TCL
Algún Shell de Unix
Visual Basic
2
Tutorial de CGI http://www.cybercursos.net
AppleScript
Simplemente depende de lo que tengas en tu sistema. Si usas un lenguaje de programación
como C o Fortran, como ya sabrás, debes compilar el programa antes de poder ejecutarlo.
Si miras en el directorio /cgi-src, encontrarás el código fuente de algunos programas CGI del
directorio /cgi-bin. Pero, si usas alguno de los lenguajes interpretados, como PERL, TCL, o
un shell de Unix, el script simplemente necesita residir en el directorio /cgi-bin, ya que no tiene
un código fuente asociado. Mucha gente prefiere escribir scripts CGI en vez de programas, ya
que son más fáciles de depurar, modificar y mantener que un programa típico compilado.
¿Qué es el directorio cgi-bin?
Este es un directorio especial, que contiene los scripts, configurado dentro del servidor
http. El servidor conoce que este directorio contiene ejecutables que deberán ser ejecutados y
su salida deberá ser enviada al navegador del cliente. No se puede simplemente crear un
directorio cgi-bin, el administrador del servidor deberá configurarlo para su uso. Si no está
configurado, los scripst serán cargados como simples ficheros de texto.
Algunos servidores están configurados de tal manera que los ficheros con una
determinada extensión (generalmente .cgi) son reconocidos como scripts y serán ejecutados
como si estuvieran en un directorio cgi-bin.
Nota: No deberemos confundirlo con html analizado (generalmente .shtml)
La configuración de los directorios, o de la extensión mencionada antes, depende únicamente
del servidor. Comprueba la documentación sobre tu servidor, o pregunta a otro usuario que
también lo use.
¿Qué parte es Perl, y qué parte es html?
El formulario que se presenta al usuario está escrito en html, y este llama al script en el
servidor escrito en perl . El script devolverá en la mayoría de los casos código html para
presentar al usuario.
3
Tutorial de CGI http://www.cybercursos.net
VARIABLES DE ENTORNO EN CGI
El servidor usa tanto de líneas de comando, como variables de entorno para pasar los
datos del servidor al script.
Estas variables de entorno se activan cuando el programa ejecuta el programa cgi.
Especificación
Las siguientes variables no dependen de la información enviada y son activadas en
todos los casos:
SERVER_SOFTWARE
Devuelve el nombre y la versión del software del servidor de información que contesta
la petición de usuario (y ejecuta el programa cgi).
Formato: nombre/versión.
SERVER_NAME
Devuelve nombre de host del servidor, el alias DNS, o la dirección IP como
aparecería en las URL autoreferenciadas.
GATEWAY_INTERFACE
Devuelve la revisión de la especificación CGI con que el servidor puede trabajar.
Formato: CGI/revisión.
Las siguientes variables de entorno son específicas de la petición de usuario, y es el
programa del gateway el que las da el valor:
SERVER_PROTOCOL
Da el nombre y revisión del protocolo de información con el que la peticion de usuario
viene. Formato: protocolo/revisión.
SERVER_PORT
Devuelve el número de puerto por el cual fue enviada la petición.
REQUEST_METHOD
4
Tutorial de CGI http://www.cybercursos.net
Devuelve el método por el cual la petición fue enviada. Para HTTP serán "GET",
"HEAD", "POST", etc.
PATH_INFO
La información extra sobre el path, tal como es dada por el cliente. En otras palabras,
podemos acceder a los scripts por su pathname virtual, seguido de alguna información extra.
Esa información extra es enviada como PATH_INFO. La información será decodificada por
el servidor si viene de una URL antes de pasarla al script CGI.
PATH_TRANSLATED
El servidor proporciona una versión traducida del PATH_INFO, que transforma el
path virtual al físico.
SCRIPT_NAME
Path virtual al script que va a ejecutar, usado para autoreferenciar URL.
QUERY_STRING
La información que sigue al signo ‘?’ en la URL que referencia al script. Es la
información de la pregunta. No deberá ser decodificada de ningún modo. Esta variable será
activada cuando hay una petición de información, sin hacer caso de la decodificación de la
línea de comandos.
REMOTE_HOST
El nombre de host que realiza la petición. Si el servidor no posee esta información
activará REMOTE_ADDR y dejará esta desactivada.
REMOTE_ADDR
La dirección IP del host remoto que realiza la petición.
AUTH_TYPE
Si el servidor soporta autentificación de usuario , y el script está protegido, esta es el
método de autentificación específico del protocolo para validar el usuario.
REMOTE_USER
Si el servidor soporta autentificación de usuario , y el script está protegido, este será el
nombre de usuario con el que se ha autentificado.
REMOTE_IDENT
5
Tutorial de CGI http://www.cybercursos.net
Si el servidor HTTP soporta autentificación RFC 931 , entonces está variable se
activará con el nombre del usuario remoto obtenido por el servidor. Esta varible solo se
utilizará durante el login.
CONTENT_TYPE
Para peticiones que tienen información añadida, como HTTP POST y PUT, este será
el tipo de datos contenido.
CONTENT_LENGTH
La longitud del contenido tal como es dado por el cliente.
Además, las líneas de la cabecera recibidas por el cliente, si las hay, son colocadas en
el entorno con el prefijo HTTP_ seguido del nombre de la cabecera. Cada carácter de el
nombre de la cabecera se cambia por caracteres _. El servidor puede excluir algunos
caracteres que ya haya procesado, como la autorización.
El tipo de contenido y la longitud de este, pueden ver suprimidas sus cabeceras si al
incluirlos se excede el límite de entorno del sistema.
Un ejemplo de esto es la variable HTTP_ACCEPT que se definió en CGI/1.0. Otro
ejemplo es la cabecera USER_AGENT.
HTTP_ACCEPT
Los tipos MIME que el cliente aceptará, como son dados por las cabeceras HTTP.
Otros protocolos pueden ser necesarios para obtener esa información de algún otro lugar.
Cada elemento de esta lista deberá estar separado por comas por la especificación HTTP.
Formato: tipo/subtipo, tipo/subtipo
HTTP_USER_AGENT
El navegador que el cliente usa para mandar la petición.
Formato general: software/versión librería/versión.
6
Así que sólo hay que dividir donde están los signos ‘&’ y ‘=’, y luego hacer dos cosas
“nombre1=valor1&nombre2=valor2&nombre3=valor3”
a cada nombre y valor:
1.Convertir todos los signos ‘+’ a espacios.
2.Convertir todas las secuencias ‘%xx’ al valor del carácter cuyo valor ASCII sea
‘xx’ en hexadecimal. Por ejemplo convertir ‘%3d’ a ‘=’.
URL, para permitir los signos ‘&’, ‘=’, y todo lo que el
Comentarios de: Tutorial de CGI (0)
No hay comentarios