Talvez os leitores sintam que os programas CGI têm uma sensação de mistério. Nesta seção, descreveremos alguns processos básicos de programação de programas CGI. Depois de lê-lo, não haverá mais mistério.
3. Outros problemas com especificações CGI:
Talvez os leitores sintam que os programas CGI têm uma sensação de mistério. Nesta seção, descreveremos alguns processos básicos de programação de programas CGI. Depois de lê-lo, não haverá mais mistério.
Em primeiro lugar, ao realizar qualquer trabalho de programação, divida uma tarefa grande em muitas tarefas pequenas, e cada tarefa pequena completa uma função relativamente independente. Muitas pessoas relutam em escrever programas CGI porque acham que programar CGI é difícil. Na verdade, se você dividir um programa CGI típico nas seguintes partes e resolvê-las uma por uma, não terá dificuldades com o programa CGI:
De modo geral, ao chamar um programa CGI no navegador, o servidor deve primeiro encontrar o programa CGI. Geralmente, o programa CGI é colocado no diretório especificado pelo servidor em nosso OmniHTTPD, no cgi-bin e no cgi-win virtual. Os diretórios reais especificados pelo diretório são os diretórios c:httpdcgi-bin e c:httpdcgi-win respectivamente. Você pode modificar o diretório real no OmniHTTPD ou adicionar um diretório virtual, como: especifique o diretório virtual cgi-test como c:my-cgi se você tiver um CGI chamado test1.cgi no programa de diretório c:my-cgi; , você pode chamá-lo em seu navegador no endereço http://localhost/cgi-test/test1.cgi.
Em circunstâncias normais, o servidor encontra o programa CGI solicitado pelo navegador e gera um processo deste programa CGI. Desta forma, o navegador e o servidor estabeleceram uma conexão. Assim que a execução do programa CGI terminar, o processo desaparece e a conexão é perdida. Todas as operações na figura acima são concluídas dentro do tempo em que a conexão é estabelecida. Portanto, as tarefas concluídas por cada programa CGI devem ser as menores possíveis, caso contrário, consumirá muito tempo e recursos do servidor e do servidor. o tempo de espera do navegador do cliente também será muito longo.
Como você pode ver na figura acima, os programas CGI são geralmente divididos em três partes: entrada de dados, processamento de dados e saída de dados, às vezes é necessário interagir com o banco de dados na parte de processamento de dados (esta também é a especialidade do CGI; programas). Entre essas três partes, a entrada e a saída de dados têm especificações rígidas, e o processamento de dados é onde você pode usar sua imaginação. A seguir, focarei nas especificações e precauções para entrada e saída de dados:
Anteriormente, listamos quase todas as variáveis de ambiente usadas pelos programas CGI. Entre eles, uma parte considerável está intimamente relacionada com a entrada e saída de dados. Abaixo, listamos as variáveis de ambiente mais comumente usadas por categoria:
Variáveis de ambiente relacionadas ao servidor:
GATEWAY_INTERFACE
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVIDOR_SOFTWARE
Variáveis de ambiente relacionadas ao cliente:
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_AUTORIZAÇÃO
HTTP_CHARGE_TO
HTTP_FROM
HTTP_IF_MODIFIED_SINCE
HTTP_PRAGMA
HTTP_REFERER
HTTP_USER_AGENT
Variáveis de ambiente relacionadas à solicitação:
AUTH_TYPE
CONTENT_FILE
CONTENT_LENGTH
CONTENT_TYPE
OUTPUT_FILE
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_USER
REQUEST_LINE
REQUEST_METHOD
SCRipT_NAME
Vale ressaltar aqui que CONTENT_FILE e OUTPUT_FILE. No Windows 3.1 e no DOS, poucos idiomas podem ler e escrever por meio de entrada e saída padrão (STDIN e STDOUT), portanto, essas duas variáveis são usadas. Para outras variáveis de ambiente, consulte a lista detalhada anterior.
Conforme mencionado anteriormente, o método GET passa dados por URL, o método POST passa dados por STDIN; Não importa qual método seja usado, os dados são codificados durante a transmissão de dados. No entanto, não precisamos nos preocupar com codificação e decodificação, pois a linguagem de desenvolvimento que usaremos pode completar automaticamente esta tarefa: cgi-lib.pl em Perl, TWebModule em Delphi, etc.
As informações do cabeçalho também são muito importantes na programação CGI. As informações do cabeçalho são um sinal do programa CGI antes de enviar as informações ao cliente. Existem três tipos principais de informações de cabeçalho:
Tipo de conteúdo //Transmite HTML para o navegador
Localização //Passa a nova URL para o navegador
Status //Geralmente usado para verificar erros quando ocorre um erro no programa CGI
Tipo de conteúdo é o tipo de informação processada pelo navegador, principalmente do tipo MIME. Os métodos são definidos como combinações de tipos e subtipos. Os tipos MIME comumente usados são: Texto, Multipart, Mensagem, aplicativo, Imagem, Áudio e Vídeo.
Por exemplo, antes de um programa CGI enviar um documento HTML para o navegador, ele deve primeiro enviar texto/html. Escrito em Perl da seguinte forma:
print "Tipo de conteúdo:texto/html"
print "<h1> Olá a todos! </h1> "
A localização faz com que o navegador redirecione para o novo URL. Por exemplo:
imprima "Local: http://www.chinabyte.com"
Este programa Perl redireciona o navegador para a página inicial do ChinaByte.
Status indica o status do programa CGI e geralmente é usado para verificar erros quando o programa CGI falha. A tabela a seguir lista os códigos de status comumente usados e seus significados:
Descrição do resultado do código
200 Solicitação OK é atendida normalmente
202 Aceitar A solicitação foi aceita e está sendo processada.
301 Movido O documento foi movido para um novo local
302 Encontrado O documento não está na descrição, mas em outro lugar do servidor.
400 Solicitação inválida A sintaxe da solicitação HTTP está incorreta.
401 Documento não autorizado requer direitos de acesso
403 Forbindden O servidor nega acesso ao documento
404 Não encontrado O servidor não consegue encontrar o documento.
500 Server Error Ocorreu um erro grave no servidor
502 Serviço sobrecarregado O servidor está ocupado e não pode processar a solicitação.
Isso termina aqui. Depois de adquirir esses conhecimentos básicos de CGI, você poderá começar a desenvolver programas CGI passo a passo usando qualquer linguagem. Deixe-me dizer novamente, os programas CGI não são misteriosos, são apenas um diálogo para criar um servidor e algum tipo de tarefa.