Common Gateway Interface


Como obter Informações do Servidor ?

Cada vez que um usuário solicita a URL correspondente ao seu programa CGI, o servidor irá executá-lo em tempo real.

Um conceito errado sobre CGI é que você pode enviar linhas de comandos opcionais e argumentos para seu programa, tal como:

command% myprog -qa blorf

CGI utiliza a linha de comando para outros propositos. Gateway usa variaveis de ambiente para enviar ao programa seus parametros.


Click aqui para ver o conteúdo das variáveis de ambiente do servidor do DCC


Variáveis de Ambiente

  • SERVER_SOFTWARE
  • Nome e número de versão software do servidor que está atendendo ao pedido e executando script CGI.
    Formato: nome/versão.

  • SERVER_NAME
  • O nome do host do servidor, alias (apelido) ou endereço IP dependendo da instalação, em particular.

  • GATEWAY_INTERFACE
  • Número de revisão da interface gateway.
    Formato: CGI/revisão #.

  • SERVER_PROTOCOL
  • Nome do protocolo e revisão do protocolo que o pedido trouxe.
    Formato: protocolo/revisão.

  • SERVER_PORT
  • Número da porta pela qual o servidor está aceitando pedidos (nomalmente porta 80).

  • REQUEST_METHOD
  • O método de pedidos. Normalmente POST ou GET.

  • PATH_INFO
  • 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.

  • PATH_TRANSLATED
  • O mapeamento físico que é derivado do caminho virtual, fornecido em PATH_INFO.

  • SCRIPT_NAME
  • O caminho e nome de arquivo do script.

  • QUERY_STRING
  • 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.

  • REMOTE_HOST
  • O nome do host da máquina que está fazendo o pedido. Nome DNS ou alias.

  • REMOTE_ADDR
  • O endereço IP de REMOTE_HOST.

  • AUTH_TYPE
  • O método de autenticação usado para validar usuários com relação a arquivos protegidos.

  • REMOTE_USER
  • O nome do usuário que está fazendo o pedido. Este valor só é definido se a autentificação de usuário tiver sido usada.

  • REMOTE_IDENT
  • O identificador de usuários para um usuário remoto em alguns esquemas de autentificação.

  • CONTENT_TYPE
  • O tipo MIME de dados que estão sendo fornecidos.

  • CONTENT_LENGTH
  • O número de bytes de conteúdo que são enviados pelo cliente.

  • HTTP_ACCEPT
  • Tipos MIME que o cliente aceitará.
    Formato: tipo/tipo,tipo/tipo,...

  • HTTP_USER_AGENT
  • O browser que o cliente está usando.


    Como enviar documentos para o usuário ?

    Programas CGI podem retornar um grande número de tipos de documentos. Podem retornar uma imagem ao usuário, um documento HTML, um documento postscript, ou talvez um audio clip. Podem também referenciar outros documentos.

    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:

  • Um documento completo com o tipo MIME correspondente.

    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>
    
  • Uma referência a outro documento.

            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>
    


    Tipos de Cabeçalho

  • CONTEXT_TYPE

    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

  • LOCATION

    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.

  • STATUS

    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.



    Menu | Introdução | Primeiros Passos
    Formulários | Segurança | Glossário | Referências