Sunteți pe pagina 1din 4

Interfaz de entrada comn

Interfaz de entrada comn


Interfaz de entrada comn (en ingls Common Gateway Interface, abreviado CGI) es una importante tecnologa de la World Wide Web que permite a un cliente (navegador web) solicitar datos de un programa ejecutado en un servidor web. CGI especifica un estndar para transferir datos entre el cliente y el programa. Es un mecanismo de comunicacin entre el servidor web y una aplicacin externa cuyo resultado final de la ejecucin son objetos MIME. Las aplicaciones que se ejecutan en el servidor reciben el nombre de CGIs. Las aplicaciones CGI fueron una de las primeras prcticas de crear contenido dinmico para las pginas web. En una aplicacin CGI, el servidor web pasa las solicitudes del cliente a un programa externo. Este programa puede estar escrito en cualquier lenguaje que soporte el servidor, aunque por razones de portabilidad se suelen usar lenguajes de script. La salida de dicho programa es enviada al cliente en lugar del archivo esttico tradicional. CGI ha hecho posible la implementacin de funciones nuevas y variadas en las pginas web, de tal manera que esta interfaz rpidamente se volvi un estndar, siendo implementada en todo tipo de servidores web.

Forma de actuacin de CGI


A continuacin se describe la forma de actuacin de un CGI de forma esquemtica: 1. En primera instancia, el servidor recibe una peticin (el cliente ha activado un URL que contiene el CGI), y comprueba si se trata de una invocacin de un CGI. 2. Posteriormente, el servidor prepara el entorno para ejecutar la aplicacin. Esta informacin procede mayoritariamente del cliente. 3. Seguidamente, el servidor ejecuta la aplicacin, capturando su salida estndar. 4. A continuacin, la aplicacin realiza su funcin: como consecuencia de su actividad se va generando un objeto MIME que la aplicacin escribe en su salida estndar. 5. Finalmente, cuando la aplicacin finaliza, el servidor enva la informacin producida, junto con informacin propia, al cliente, que se encontraba en estado de espera. Es responsabilidad de la aplicacin anunciar el tipo de objeto MIME que se genera (campo CONTENT_TYPE).

Programacin de un CGI
Un programa CGI puede ser escrito en cualquier lenguaje de programacin que produzca un fichero ejecutable. Entre los lenguajes ms habituales se encuentran: C, C++, Perl, Java, Visual Basic... No obstante, debido a que el CGI recibe los parmetros en forma de texto ser til un lenguaje que permita realizar manipulaciones de las cadenas de caracteres de una forma sencilla, como por ejemplo Perl. Perl es un lenguaje interpretado que permite manipulaciones sencillas de ficheros y textos, as como la extraccin y manipulacin de cadenas de caracteres, unidas a unas bsquedas rpidas y fciles.

Interfaz de entrada comn

Intercambio de informacin: Variables de entorno


Variables de entorno que se intercambian de cliente a CGI: 1. QUERY_STRING: Es la cadena de entrada del CGI cuando se utiliza el mtodo GET sustituyendo algunos smbolos especiales por otros. Cada elemento se enva como una pareja Variable=Valor. Si se utiliza el mtodo POST esta variable de entorno est vaca. 2. CONTENT_TYPE: Tipo MIME de los datos enviados al CGI mediante POST. Con GET est vaca. Un valor tpico para esta variable es: Application/X-www-form-urlencoded. 3. CONTENT_LENGTH: Longitud en bytes de los datos enviados al CGI utilizando el mtodo POST. Con GET est vaca. 4. PATH_INFO: Informacin adicional de la ruta (el "path") tal y como llega al servidor en el URL. 5. REQUEST_METHOD: Nombre del mtodo (GET o POST) utilizado para invocar al CGI. 6. SCRIPT_NAME: Nombre del CGI invocado. 7. SERVER_PORT: Puerto por el que el servidor recibe la conexin. 8. SERVER_PROTOCOL: Nombre y versin del protocolo en uso. (Ej.: HTTP/1.0 o 1.1) Variables de entorno que se intercambian de servidor a CGI: 1. SERVER_SOFTWARE: Nombre y versin del software servidor de www. 2. SERVER_NAME: Nombre del servidor. 3. GATEWAY_INTERFACE: Nombre y versin de la interfaz de comunicacin entre servidor y aplicaciones CGI/1.12

Tipos habituales de CGIs


1. Contador de accesos: Cuenta el nmero de veces que se ha solicitado una pgina determinada. Se guarda el valor en un fichero. Cada vez que se invoca se incrementa, para su posterior visualizacin. 2. Buscador: Localiza pginas que contengan los trminos especificados. Utiliza una tabla que enumera las palabras y para cada una especifica las pginas dnde se encuentra. 3. Correo: Obtiene informacin estructurada del usuario. 4. Contribuciones: Permite aadir enlaces o anotaciones a una pgina, indicando la procedencia de la adicin. 5. Estadsticas de uso: Presenta informacin sobre los acontecimientos producidos en el servidor de WWW. El servidor mantiene un registro (log) de los acontecimientos que se han producido. 6. Administracin remota del servidor: Permite interactuar con el servidor desde WWW. Invoca los programas que controlan o modifican el comportamiento del servidor.

Escenario de activacin de un CGI


1. Situacin inicial: El cliente solicita la invocacin de un CGI, bien de manera involuntaria (se enva nicamente informacin de cabecera) o bien de forma explcita (formulario). En el formulario hay parejas del tipo variable=valor. El mtodo de http especificado en el formulario puede ser GET o POST. En el servidor en cambio, el fichero de configuracin especifica un directorio cgi-bin con capacidad para ejecutar programas. Puede haber otros ficheros y otros programas a los que puede acceder tanto el servidor como sus CGIs. 2. El cliente pulsa el botn de tipo SUBMIT en el formulario: Dependiendo del mtodo se construye un mensaje que contiene la informacin del formulario en la cabecera (para GET) o en el cuerpo del mensaje (para POST). El mensaje se enva al servidor, aadiendo informacin propia del cliente que el propio navegador conoce. El cliente queda a la espera de recibir un objeto MIME como respuesta del servidor. 3. El servidor recibe el mensaje de peticin o pone en marcha el programa CGI: El servidor compara la informacin del mensaje con la que conoce de su fichero de configuracin, determinando as la validez de la

Interfaz de entrada comn peticin. En realidad el servidor se pregunta: Existe esta URL? Se tienen todos los permisos?. Prepara el entorno aadiendo informacin propia a la comunicada por el navegador del cliente. Si es GET, la informacin procedente del formulario (parejas variable=valor) se definen en QUERY_STRING. El servidor posteriormente pone en funcionamiento el CGI. Si se trata de POST, la informacin se coloca en la entrada estndar del CGI. Finalmente se inicia la ejecucin del CGI y el servidor espera a que sta acabe. 4. Ejecucin del CGI: El CGI accede a las variables de entorno. Comprueba o adapta el funcionamiento segn el mtodo GET o POST establecido en REQUEST_METHOD: si se tratara de GET, la informacin estar en QUERY_STRING, mientras que si se trata de POST, se tomar la entrada estndar. Se construye un objeto MIME que se enviar al cliente. La primera escritura deber anunciar el tipo de objeto: CONTENT_TYPE: tipo/subtipo. 1. El servidor vuelve al trabajo: El servidor aade a su respuesta del CGI una cabecera indicando su tamao (CONTENT_LENGTH). 2. El cliente recibe la respuesta: Interpretacin de la respuesta. Visualizacin con el navegador.

Bibliografa
Sergio Lujn Mora (2001) (en espaol, libro completo gratuito en pdf). Programacin de servidores web con CGI, SSI e IDC [1] (1 edicin). Editorial Club Universitario. Shishir Gundavaram (marzo de 1996) (en ingls, libro completo en html). CGI Programming on the World Wide Web [2] (1 edicin). O'Reilly & Associates, Inc..

Enlaces externos
Estndar CGI [3] en w3.org. La especificacin CGI/1.1 [4] El protocolo SCGI [5] es un reemplazo del protocolo Common Gateway Interface (CGI). Curso de CGI [6] en lenguaje C.

Referencias
[1] [2] [3] [4] [5] [6] http:/ / hdl. handle. net/ 10045/ 16997 http:/ / oreilly. com/ openbook/ cgi/ http:/ / www. w3. org/ CGI/ http:/ / hoohoo. ncsa. uiuc. edu/ cgi/ http:/ / www. mems-exchange. org/ software/ scgi/ http:/ / comunidad. ok. cl/ cgimaster/

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Interfaz de entrada comn Fuente: http://es.wikipedia.org/w/index.php?oldid=51131114 Contribuyentes: Acevedo, Airunp, Alexquendi, Berus41, Beto X, Chabacano, Didac, Digigalos, Dodo, Edupedro, Emilianogc kc, Equi, Firula, GermanX, Ignacio Icke, Irbian, Isha, JMPerez, Jjvaca, JoaquinFerrero, Jondel, JorgeGG, ManuelGR, Mnts, Muro de Aguas, Murphy era un optimista, P.o.l.o., Pabloab, Pathfinder, Pinar, Qwertyytrewqqwerty, Racso, Sbassi, Serlumo, Shooke, Spa karmona, SpeedyGonzalez, Taichi, Tano4595, Virtualo, Xavigivax, 88 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

S-ar putea să vă placă și