¿?        Alojamiento Web
CGI

CGI

De TW

Este artículo ha sido reformateado automáticamente desde http://www.tejedoresdelweb.com/307/article-1856.html y su formato necesita ser revisado
Este artículo es bastante antiguo. Su contenido posiblemente está obsoleto y necesita ser actualizado.
Este artículo es un esbozo y necesita ser expandido

CGI es un protocolo mucho más simple que HTTP. Describe la forma en que un cliente y un programa corriendo en un servidor web se entienden. Es ortogonal a HTTP, puesto que sólo delimita la interacción entre el servidor web y el programa.

La comunicación utiliza:

  1. Variables de ambiente
  2. Entrada estándar del programa
  3. Salida estándar del programa

Variables de ambiente

Las siguientes variables de ambiente siempre están presentes:

  1. SERVER_SOFTWARE "Apache/1.3.14 (Unix)"
  2. SERVER_NAME "www.example.com"
  3. GATEWAY_INTERFACE "CGI/1.1"

Dependiendo del requerimiento, estarán presentes también:

  1. SERVER_PROTOCOL "HTTP/1.1"
  2. SERVER_PORT "80"
  3. REQUEST_METHOD "GET"
  4. SCRIPT_NAME

Si se usa comunicación vía PATHS (ej.: algo.cgi/dir1/dir2/recurso):

  1. PATH_INFO "dir1/dir2/recurso"
  2. PATH_TRANSLATED "/home/user/www/dir1/dir2/recurso"

Si se usa método GET:

  1. QUERY_STRING "a=1&b=2"

Si se usa método POST:

  1. CONTENT_TYPE "text/plain"
  2. CONTENT_LENGTH número_de_bytes

Para identificar al usuario remoto:

  1. REMOTE_HOST (IP si RemoteHostLookups Off)
  2. REMOTE_ADDR
  3. REMOTE_IDENT (rara vez el cliente tiene ident encendido)

Para autentificación:

  1. AUTH_TYPE (ej.: basic)
  2. REMOTE_USER (usuario autentificado por el servidor)

Entrada estándar

Se usa si el método es POST. En tal caso se lee la entrada estándar. No se puede re-leer.

Salida estándar

Debe comenzar con "Content-type: text/html" y una línea en blanco si la configuración del servidor es esa. Normalmente si un script escribe a su salida de error el servidor asume que es un error, pero esto no forma parte del estándar CGI, sino que está motivado por razones de seguridad.