En informática, Common Gateway Interface (CGI) es una especificación de interfaz que permite a los servidores web ejecutar un programa externo para procesar solicitudes de usuario HTTP o HTTPS.
Estos programas suelen estar escritos en un lenguaje de secuencias de comandos y comúnmente se les conoce como secuencias de comandos CGI, pero pueden incluir programas compilados.
Un caso de uso típico ocurre cuando un usuario web envía un formulario web en una página web que utiliza CGI. Los datos del formulario se envían al servidor web dentro de una solicitud HTTP con una URL que indica un script CGI. Luego, el servidor web inicia el script CGI en un nuevo proceso informático y le pasa los datos del formulario. La salida del script CGI, generalmente en forma de HTML, es devuelta por el script al servidor web, y el servidor la retransmite al navegador como respuesta a la solicitud del navegador.
Desarrollado a principios de la década de 1990, CGI fue el primer método común disponible que permitía que una página web fuera interactiva. Debido a la necesidad de ejecutar scripts CGI en un proceso separado cada vez que llega una solicitud de un cliente, se desarrollaron varias alternativas.
Históricamente, los programas CGI se escribían a menudo utilizando el lenguaje de programación C. La RFC 3875 “The Common Gateway Interface (CGI) Version 1.1” define parcialmente CGI usando C, al decir que las variables de entorno “son accesibles mediante la rutina de biblioteca C getenv() o la variable entorno”.
El nombre CGI proviene de los primeros días de la Web, donde los webmasters querían conectar sistemas de información heredados, como bases de datos, a sus servidores Web. El programa CGI fue ejecutado por el servidor y proporcionó una “puerta de enlace” común entre el servidor web y el sistema de información heredado.