¿Qué es un CGI?

Atrás 3/3

Básicamente, un CGI (Common Gateway Interface) es el protocolo estándar HTTP/1.0 para comunicación entre el servidor y los programas adicionales ubicados en él. De hecho, es un pequeño código de programa que se ejecuta en los servidores web, y que permite la interacción con el usuario, ofreciendo un aspecto dinámico a las páginas web. El significado de la sigla CGI es el siguiente:

Common: hace referencia a que un CGI puede ser utilizado por muchos lenguajes e interactuar con sistemas muy diferentes.

Gateway: sugiere que la potencia del CGI no se encuentra en lo que puede hacer por sí mismo, sino en el acceso potencial que ofrece a otros sistemas, como por ejemplo bases de datos.

Interface: indica que el CGI proporciona una forma muy definida de acceder a sus características.

CGI es, pues, una interfaz entre servidores de información y programas de aplicación, y por lo tanto define una serie de reglas que deben cumplirse tanto por parte de las aplicaciones como de los servidores, para hacer posible la presentación de resultados de programas ejecutables en tiempo real mediante servicios de información estandarizados. Por este motivo, hablamos del CGI como pasarela o gateway entre dos niveles de aplicación.

 
Contenido complementario

A diferencia de un documento simple de HTML, que es administrado por el servidor y estático, es decir, un fichero de texto que no cambia, un programa CGI se ejecuta en tiempo real, de modo que puede reportar información dinámica. Por ejemplo, supongamos que queremos poner una base de datos en Oracle a disposición de todos los internautas que puedan consultarla. Esto resultará más o menos complejo, pero lo que necesitaríamos sería crear un programa de CGI que sea ejecutado por el servidor web,  para poder así transferir la consulta hacia la base de datos y devolver los resultados al navegador cliente.

Por el hecho de tratarse de una pasarela, no hay ningún tipo de dependencia con el lenguaje de programación que se quiera utilizar. Es posible escribir un programa CGI en diferentes lenguajes, ya sean compilados o interpretados, con la condición de que puedan ser ejecutados en el sistema del servidor web. De este modo, podremos encontrar CGI escritos en C, C++, Pascal, PERL, TCL, Delphi, etc. Normalmente, sin embargo, se suele utilizar PERL para escribir guiones de CGI. Quizá la razón se encuentra en las características de este lenguaje de programación: "Perl es un lenguaje interpretado, optimizado para analizar ficheros de texto arbitrariamente, extraer información e imprimir informes a partir de esta información". Ya que la mayor parte de la funcionalidad de los CGI supone tratar datos y acceder a programar diferentes apliques, Perl proporciona herramientas para realizar estas tareas de una manera sencilla.

Los lenguajes interpretados, como por ejemplo TCL o PERL, resultan más dinámicos en el momento de llevar a cabo el mantenimiento y las depuraciones que hagan falta, y acostumbran a ser lenguajes de alto nivel, por lo que no permiten realizar ciertas operaciones con la memoria (la seguridad es básica en sistemas de servidor), y es más difícil dejarse algún proceso descontrolado en el sistema, ya que enseguida detectaremos el error. La parte menos positiva de los lenguajes interpretados es que no son tan rápidos como los lenguajes compilados. Este tema es fundamental, ya que en el caso de un CGI la velocidad de ejecución es muy importante, porque tendremos que sumar diferentes procesos como el tiempo propio de ejecución, la velocidad de transferencia de la red y los tiempos de espera en la interrogación al sistema o a una base de datos. Todo este tiempo tiene que ser el mínimo, ya que lo sufrirá el usuario.

La manera en la que interactúa un CGI con un formulario o una solicitud de página puede verse en el siguiente gráfico:

 
Contenido complementario

  1. El usuario, desde el cliente web, solicita una página determinada o envía un formulario con el contenido de su petición o el documento pertinente.
  2. El formulario es enviado al servidor, que al mismo tiempo lo pasa al programa CGI.
  3. El programa CGI lleva a cabo el procesamiento de los datos, que en el caso de interrogar una base de datos lo que hace es transformar la petición del usuario en un query o una pregunta que éste pueda interpretar y procesar. La base de datos responde al CGI, y éste envía la respuesta al servidor después de darle una apariencia para que posteriormente le sea comprensible al cliente; por lo general se trata de un tipo MIME, como por ejemplo text/html.
  4. El servidor web devuelve la respuesta del CGI al cliente web como una página web, que se presenta como cualquier otra página: en formato HTML, pero con información generada de forma dinámica.

Las aplicaciones CGI acostumbran a residir en un directorio especial de los servidores web. El más común es "/cgi-bin/", o "/cgi-local/", de modo que sólo los programas CGI que han sido almacenados en ellos son operativos, y así se evita que funcionen en cualquier otro directorio. Pensemos que es muy importante la seguridad en el servidor web cuando se ejecutan programas, ya que las configuraciones de directorios y sistemas que no son completamente seguras pueden ocasionar muchos quebraderos de cabeza.

Realmente, es posible desarrollar casi cualquier aplicación con CGI, pero sus tareas principales se han enfocado hacia:

 
Reflexión

Procesamiento de formularios.

Acceso y consultas a bases de datos, interactuando en muchas ocasiones con otros lenguajes interpretados como por ejemplo SQL.

Generar documentos activos en tiempo real, como informaciones de carácter económico (hay que pensar en los índices bursátiles para encontrar una aplicación clara).

Contadores de acceso a páginas web, servicios push, chats interactivos, etc.
Arriba