Common Gateway Interface
Um conceito errado sobre CGI é que você pode enviar linhas de comandos opcionais e argumentos para seu programa, tal como:
CGI utiliza a linha de comando para outros propositos. Gateway usa variaveis de ambiente para enviar ao programa seus parametros.
Nome e número de versão software do servidor que está atendendo ao pedido e executando script CGI.
Formato: nome/versão.
O nome do host do servidor, alias (apelido) ou endereço IP dependendo da instalação, em particular.
Número de revisão da interface gateway.
Formato: CGI/revisão #.
Nome do protocolo e revisão do protocolo que o pedido trouxe.
Formato: protocolo/revisão.
Número da porta pela qual o servidor está aceitando pedidos (nomalmente porta 80).
O método de pedidos. Normalmente POST ou GET.
A informação sobre o caminho que vem junto com o pedido.
Normalmente, esta informação está colada no final do URL que chamou o script CGI.
O mapeamento físico que é derivado do caminho virtual, fornecido em PATH_INFO.
O caminho e nome de arquivo do script.
O valor do URL de consulta ou formulário que foi enviado, usando o método POST, está armazenado aqui. A QUERY_STRING é codificada com URL, a menos que a consulta tenha sido chamada com a etiqueta "<"ISINDEX">", então, o "nome" do campo é omitido e somente o valor é associado à variável QUERY_STRING. Nos chamados "<"ISINDEX">", o valor descodificado também será passado, junto com o script, como parâmetros de linha de comando.
O nome do host da máquina que está fazendo o pedido. Nome DNS ou alias.
O endereço IP de REMOTE_HOST.
O método de autenticação usado para validar usuários com relação a arquivos protegidos.
O nome do usuário que está fazendo o pedido. Este valor só é definido se a autentificação de usuário tiver sido usada.
O identificador de usuários para um usuário remoto em alguns esquemas de autentificação.
O tipo MIME de dados que estão sendo fornecidos.
O número de bytes de conteúdo que são enviados pelo cliente.
Tipos MIME que o cliente aceitará.
Formato: tipo/tipo,tipo/tipo,...
O browser que o cliente está usando.
O cliente necessita saber que tipo de documento receberá, para que possa apresentá-lo de maneira adequada. Logo o programa CGI deve informar ao servidor que tipo de documento está sendo enviado.
De forma a comunicar ao servidor o tipo de documento que está retornando, se é um documento completo ou uma referência para outro, CGI requer um pequeno cabeçalho na saída. Este cabeçalho é um texto ASCII, consistindo de linhas separadas ou por linefeeds ou por carriage returns (ou por ambos) seguidos de uma linha em branco.
Exemplo:
Enviando um documento HTML para o cliente.
Content-type: text/html
<HTML><HEAD>
<TITLE>output of HTML from CGI script</TITLE>
</HEAD><BODY>
<H1>Sample output</H1>
What do you think of <STRONG>this?</STRONG>
</BODY></HTML>
Content-type: text/html
Location: gopher://httprules.foobar.org/0
<HTML><HEAD>
<TITLE>Sorry...it moved</TITLE>
</HEAD><BODY>
<H1>Go to gopher instead</H1>
Now available at
<A HREF="gopher://httprules.foobar.org/0">a new location</A>
on our gopher server.
</BODY></HTML>
O tipo de conteúdo se refere a qualquer tipo de dado MIME que seja aceito pelo servidor.
Os tipos comuns incluem texto/html, texto/simples e dados/gif.
Como o browser/servidor não pode deduzir este tipo de arquivo, a partir de uma localização ou sufixo de nome de arquivo, este título informará ao browser que tipo de dados esperar e como usá-lo.
Formato: tipo/tipo
Aponta para um documento em algum outro lugar do servidor.
Permite que você redirecione pedidos para documentos, baseando-se em algum critério enviado por um formulário ou variável de ambiente.
Pode ser usado para executar um script, sem enviar uma nova página para o cliente. Também pode ser usado para enviar uma mensagem de erro ou outra informaçao para o cliente.