CGI (Common Gateway Interface) é a especificação de uma interface que permite que servidores Web tenham acesso a funcionalidades oferecidas por programas executando no ambiente da máquina servidora. Através de programas conectados a essa interface é possível por exemplo conectar uma base de dados à Web ou gerar dinamicamente o conteúdo de uma página HTML.
O servidor Web reconhece uma requisição CGI quando o URL especificado na solicitação identifica um arquivo executável (programa ou script) localizado em um diretório específico dentro do espaço Web de recursos disponibilizados aos clientes. Parâmetros podem ser repassados ao programa CGI especificando-os no URL, separados do nome do recurso pelo caráter '?'.
Tipicamente um programa CGI pode ser desenvolvido em qualquer linguagem de programação que tenha acesso à leitura de variáveis de ambiente e à manipulação dos streams padrões de entrada e saída de dados do sistema operacional (stdin, System.in; stdout, System.out).
Variáveis de ambiente definidas no processamento através da interface CGI incluem:
SERVER_SOFTWARE: nome e versão do software servidor que está respondendo à requisição, formato nome/versão;
SERVER_NAME: endereço IP (simbólico ou numérico) do servidor;
SERVER_PORT: número da porta para a qual a solicitação foi enviada;
REQUEST_METHOD: o serviço que originou a solicitação (método GET, POST, ...);
QUERY_STRING: no caso de consulta ou envio de formulários, a informação dos parâmetros codificada segundo o formato www-urlencoded.
REMOTE_HOST: endereço IP simbólico de onde a requisição foi enviada;
CONTENT_TYPE: tipo de conteúdo dos dados para serviços que enviam informação para o servidor (PUT, POST);
CONTENT_LENGTH: o comprimento em bytes do conteúdo especificado em CONTENT_TYPE;
HTTP_USER_AGENT: software que o cliente está utilizando para navegação.