Conceptos CGI

CGI (Common Gateway Interface). Su significado en español es Interfaz común de pasarela común. CGI es un conjunto de convenios, variables y reglas mediante las cuales interacciona el navegador y el servidor.

Para poder escribir CGI es necesario tener un servidor, por la razón vista anteriormente y seguir ciertos criterios como los que veremos a continuación:

a) CGI es una especificación sobre transferencia de datos, no un lenguaje de programación.

b) Un script CGI es un programa ejecutable que decodifica la especificación CGI.

c) Los Scripts CGI pueden ser escritos en cualquier lenguaje de programación, aunque por lo regular están escritos en PERL debido a que operan sobre UNIX, también se pueden realizar en Java o C++.

Estructura de un CGI

Un programa CGI tiene tres funciones básicas de entrada/salida:

1. Recabar la entrada del servidor, en forma de variables estandarizadas, datos de formularios y datos de consulta.

2. Proporcionar los datos de salida al cliente (Navegador web)

3. Proporcionar información de negociación del contenido (encabezado MIME) para el servidor y el cliente.

Las especificaciones completas de CGI se pueden encontrar en:

http://hoohoo.ncsa.uiuc.edu/cgi/

#!/usr/local/bin/perl
#
#hello_s.pl– simple «hello, world» programa para demostrar básicamente la salida CGI
#imprime el encabezado CGI, requerido para las salidas HTML
#Noten el extra \n, para enviar una línea en blanco
print «Content-type: text/html\n\n» ;
# imprime la respuesta HTML a STDOUT
print “CGI Hello\n”;
# imprime el cuerpo
print “

Hello, world.

”;
exit ;

La primera línea debe especificar en dónde encontrar el intérprete PERL, en la mayoría de los sistemas será “/usr/bin/ perl”, el cual se ha convertido un lugar estándar.

Por lo general, los Scripts CGI toman su entrada de las variables de ambiente y envían su salida al flujo de salida estándar. Conocid o comúnmente como salida estándar (stdout). Se llama flujo a esta sa lida, debido a que se transmite al usuario como un flujo de bytes o caracteres. La salida del programa requiere estar en un formato que el navegador pueda desplegar, por lo regular es en HTML. Sin embargo, el script debe decirle primero al navegador de qué tipo de datos se trata. Esto se hace con la siguiente directiva:

Content-type:

Esto especifíca el tipo MIME del flujo que se va a enviar al usuario, en su mayoría será “text/html” y “text/plain” para doc umentos informativos. El encabezado MIME siempre deberá estar separ ado del cuerpo del documento por una línea en blanco. Los tipos MIME son cadenas de caracteres estándar de caso sensitivo que identifican el tipo de datos usado a través de Internet para muchos propósitos.

Comienzan con el tipo general de datos (como text, image, o audio), seguido por un slash, y terminando con el tipo específico de datos (como html, gif, or jpeg). Los archivos HTML se identifican con text/html, y los GIFs y JPEGs se identifican con image/gif y image/jpeg.

PERL utiliza el comando print para enviar texto a la salida estándar. El texto está cerrado entre comillas y no hay líneas nuevas predeterminadas, por lo que se deben enviar explícitamente.

Variables de entorno

CGI define una serie de variables de entorno que sirven para pasar la información, dicha información está compuesta por el nombre del servidor, nombre del usuario autenticado y la dirección IP del cliente que está accediendo al servidor. Estas variables de entorno se pasan a cada programa CGI que invoca el servidor. Algunas variables son necesarias y otras opcionales. El servidor y el navegador web pueden generar variables de entorno y pasarlas al programa CGI. Para encontrar más información sobre las variables de entorno:

http://hoohoo.ncsa.uiuc.edu/cgi/env.html

Fuente: Apuntes Desarrollo de Páginas Web de la U de Londres