Guia de Consulta Rápida
HTTP Décio Jr.
Novatec Editora www.novateceditora.com.br
Guia de Consulta Rápida HTTP de Décio Jr.
Copyright2001 da Novatec Editora Ltda.
Todos os direitos reservados. É proibida a reprodução dessa obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, dos autores e da Editora.
ISBN: 85-7522-010-1
Novatec Editora Ltda. Rua Cons. Moreira de Barros 1084 Conj 01 02018-012 São Paulo - SP Brasil Tel.: (0xx11) 6959-6529 Fax: (0xx11) 6950-8869 E-mail: novatec@novateceditora.com.br Site: www.novateceditora.com.br
2
Sumário
Sumário Introdução ..................................................................................... 5 A Web e a Internet ................................................................. 5 A Web e o HTTP .................................................................... 5 O protocolo de comunicação ................................................. 5 O surgimento do protocolo HTTP ......................................... 6 O protocolo HTTP ................................................................. 6 O modelo de referência OSI .................................................. 7 As camadas de protocolos ...................................................... 8 O HTTP e o TCP/IP ............................................................... 9 O que são recursos (resources) ............................................ 10 Um esquema compreensível de endereçamento .................. 10 HTML & URL, URI , URN ................................................. 12 HTML, XHTML e XML ..................................................... 12 Estrutura do protocolo HTTP ..................................................... 13 Arquitetura Cliente/Servidor ................................................ 13 Conectividade e Interface .................................................... 13 Os navegadores (browsers) .................................................. 14 Transações HTTP ................................................................. 15 Métodos principais ..................................................................... 20 Cabeçalhos (headers) HTTP ....................................................... 27 Sumário dos cabeçalhos ....................................................... 27 Cabeçalhos gerais ................................................................. 31 Cabeçalhos de requisições de clientes ................................. 45 Cabeçalhos de resposta do servidor ..................................... 65 Cabeçalhos de entidades ...................................................... 72 Códigos de retorno ..................................................................... 82 Variáveis de ambiente ................................................................. 89 Aplicações do protocolo ............................................................. 96 WebServ Perl ........................................................................ 96 Servidores Proxy .................................................................. 98 Funcionamento do servidor Proxy ....................................... 99 HttpSniff ............................................................................. 102 LWP – Módulo Perl ........................................................... 104
3
Sumário Miscelânea ................................................................................ 105 Telnet na Porta 80 (padrão) ................................................ 105 Especificações do HTTP, HTML e CGI ............................ 106 Histórico e evolução do protocolo ..................................... 107 Conceitos importantes .............................................................. 110 Chunked Transfer-Encoding ........................................ 112 Código de resposta "100 Continue" ................................... 113 Utilizando o código de resposta “100 Continue” ........ 114 Servidores HTTP 1.1 ......................................................... 115 Aceitando URL absoluta ............................................. 115 Codificação de transferência em blocos ...................... 115 Manipulando os cabeçalhos de requisição If-ModifiedSince: ou If-Unmodified-Since: ............................ 116 Suporte aos métodos GET e HEAD .................................. 118 Suporte às requisições HTTP 1.0 ....................................... 118 Conexões persistentes ........................................................ 118 O Protocolo HTTP e a CGI ................................................ 121 Informações adicionais ............................................................. 122 Notação sintática utilizada ................................................. 123 Sobre o autor ...................................................................... 123 Comentários e sugestões .................................................... 123 Índice ........................................................................................ 124
4
Introdução
Introdução A Web e a Internet A Internet é uma rede de comunicações de abrangência mundial e a World Wide Web é uma forma particular de utilização da Internet. A World Wide Web ou simplesmente Web, WWW ou W3 é um dos serviços baseados em hipertextos mais populares fornecidos por meio da Internet. Mas não é apenas isso: a Web é o conjunto de todos os navegadores, servidores, arquivos ou recursos, e qualquer outro serviço disponível e acessível através de um browser na Internet. A Web tornou-se a tecnologia de informação mais importante dos últimos anos. Não há como negar que grande parte das aplicações hoje em dia são voltadas para a Web, seja para Intranet, Extranet ou Internet. Mas, afinal de contas, o que faz a Web funcionar?
A Web e o HTTP A Web está relacionada à distribuição de documentos e informações pela Internet, e o HTTP tem como função servir como o protocolo de rede da Web. Embora seja um protocolo relativamente simples, poderoso e flexível, o conhecimento dos detalhes do HTTP permite desenvolver programas para navegadores Web, servidores Web, páginas automáticas de download, verificadores de consistência de links, e diversas outras ferramentas úteis.
O protocolo de comunicação A Web utiliza a Internet como meio de comunicação, devendo obedecer aos protocolos de comunicação próprios da Internet. Um protocolo é um conjunto de regras que administra os procedimentos para troca de informações.
5
Introdução
O surgimento do protocolo HTTP O protocolo HTTP foi implementado nos anos de 1989 a 1991 no CERN (European Center for High-Energy Physics) em Genebra, na Suíça, por um físico inglês chamado Tim Berners-Lee. A proposta inicial era facilitar a comunicação e compartilhar informações entre os pesquisadores. Deveria existir uma forma de localizar documentos em um computador que pudesse fornecer ligações (links) para documentos localizados em outros computadores em uma rede. Uma das principais características do HTTP estaria na representação dos dados (formato e negociação), permitindo que os sistemas pudessem ser construídos independentemente dos dados que seriam transferidos.
O protocolo HTTP O HTTP (HyperText Transfer Protocol) é o protocolo de rede utilizado para entregar virtualmente todos os arquivos e outros dados (de forma abrangente chamados de recursos ou resources) na Word Wide Web, sejam eles documentos HTML, arquivos de imagens, resultados de consulta a bancos de dados, arquivos de texto, ou qualquer outro tipo de recurso. É responsável pela maioria das transações realizadas na Internet e, conseqüentemente, também é o grande responsável pelo sucesso da Web. O protocolo de transferência de hipertextos surgiu da necessidade de distribuição de informações na Internet, que poderia ser na forma de texto, som ou imagem. Para que essas transferências fossem possíveis houve a necessidade de desenvolver uma forma padronizada de comunicação entre os clientes e os servidores Web. A partir daí o protocolo HTTP passaria a especificar como as transações entre clientes e servidores seriam realizadas, ou seja, de que forma seriam feitas as requisições de dados e como seriam aceitas e respondidas pelos servidores de recursos na Internet.
6
Introdução
O modelo de referência OSI É o modelo-padrão de referência para comunicação entre aplicações em uma rede, cujo objetivo é definir as regras de conectividade para interligar sistemas de computadores locais ou remotos.
7
Introdução
As camadas de protocolos Em um sistema de comunicação em rede, os diversos protocolos existentes trabalham de forma coopertiva para fornecer serviços. O modelo de referência OSI da ISO define 7 camadas, e a arquitetura Internet baseia-se em quatro camadas conforme a figura a seguir. A camada de aplicação, onde se situa o protocolo HTTP, envia ou recebe mensagens HTTP para ou da camada imediatamente inferior ou superior, a de transporte (TCP), que tem como função tornar confiável a transferência de informações. A camada do Protocolo Internet (IP) recebe ou envia pacotes individuais de informações e os encaminha aos seus destinos.
8
Introdução
O HTTP e o TCP/IP O Protocolo de Controle de Transmissão da Internet (TCP) e o IP (Internet Protocol) tornam possível a conectividade entre navegadores e servidores. Além dos protocolos TCP/IP para comunicação por meio da Internet, a Web também utiliza seu próprio protocolo - o HTTP para troca de informações entre clientes e servidores. O HTTP é utilizado pelos clientes para requisitarem documentos ou serviços dos servidores, que retornarão os documentos ou resultados para os clientes. Geralmente, o protocolo HTTP funciona mediante conexões TCP/IP (sockets TCP/IP).O HTTP é o protocolo utilizado para a comunicação entre computadores na Internet ao mesmo tempo em que define as regras básicas para as transações entre clientes e servidores na Web. A rigor, o HTTP é uma aplicação como qualquer outra baseada no Unix padrão, como o FTP, o Telnet, o SMTP e outras.
MsgHTTP = Mensagem HTTP TCP + Mensagem HTTP = Segmento TCP IP + Segmento TCP = IP Datagrama Rede + IP Datagrama => pacote ou frame Datagrama é um pacote de informação que contém os dados do cliente/ usuário, permitindo sua transferência em uma rede de pacotes.
9
Introdução
O que são recursos (resources) O protocolo HTTP é utilizado para transmitir recursos e não apenas arquivos. Um recurso é qualquer trecho de informação que possa ser identificado por um URL (Uniform Resource Locator). O tipo mais comum de recurso é um arquivo (HTML ou ASCII), mas pode ser também um documento de qualquer outro tipo, o resultado de uma consulta a um banco de dados que fora gerado dinamicamente, a saída de um script CGI, e qualquer outro recurso que esteja disponível no servidor. De modo mais abrangente, um recurso pode ser encarado como um arquivo; de forma mais específica, a maioria dos recursos são arquivos ou saídas de scripts geradas pelo servidor (server-side script).
Um esquema endereçamento
compreensível
de
O protocolo HTTP utiliza o conceito de referência fornecido pelo Universal Resource Identifier (URI), assim como o URL (Universal Resource Locator) ou o URN (Universal Resource Name), para indicar o recurso sobre o qual um método será aplicado. Quando um hiperlink HTML estiver formado, a URL (Uniform Resource Locator) é representada pela forma geral http:// host:número-porta/caminho/arquivo.html. Geralmente, uma referência URL é do tipo serviço://host/ arquivo.extensão e desta forma o protocolo HTTP pode incluir os serviços mais básicos da Internet (http, ftp, gopher, file, news, ldap...). URL (Uniform Resource Locator) Na Web, um recurso é representado por qualquer conjunto de dados ou informações que esteja disponível em algum lugar, geralmente em um servidor ligado à Internet. Esse recurso pode estar em um formato de texto ASCII (txt, por exemplo), ou no formato de página HTML, ou um script CGI ou ainda uma imagem. O URL é a forma-padrão utilizada para localizar um recurso na Web. Deve ficar claro que URL não é algo específico do protocolo HTTP, podendo ser utilizado para localização de recursos com muitos outros protocolos. O entendimento dos elementos de um URL é um auxílio para a melhor compreensão do funcionamento das transações do protocolo HTTP.
10
Introdução
Elementos de uma URL
O navegador interpreta o URL da esquerda para a direita, da seguinte forma: Elemento
Descrição
http://
Indica o esquema a ser usado, ou seja, utiliza o protocolo HTTP; https significa um pedido de conexão a um servidor Web seguro (SSL).
user
Nome do usuário a ser utilizado no caso de tentativa de acesso a um recurso protegido.
senha
Senha do usuário a ser utilizada no caso de tentativa de acesso a um recurso protegido.
www.dominio.com.br Indica o endereço virtual do computador (host servidor) na Internet com o qual deverá entrar em contato para estabelecer uma conexão. :80
Deve estabelecer a conexão na porta 80 do servidor; o número da porta pode ser qualquer outro que esteja disponível no servidor e que tenha sido configurado para essa função. Caso seja omitido, assume-se que o número da porta-padrão para acesso HTTP é a 80. O número de porta 443 é utilizado para conexões por meio do https.
/
O que segue a barra após o nome do host e o número da porta está relacionado ao recurso ou documento a ser requisitado.
/docs/doc.html Define o caminho e a identificação do recurso.Também poderia ser um script CGI a ser executado no servidor. ?ano=2001&mes=08 Passagem de um parâmetro para determinar a consulta de apenas alguns itens. #d10
O fragmento representa onde deverá ser posicionado o item requisitado no resultado da consulta.
11
Introdução
HTML & URL, URI , URN HTML (HyperText Markup Language) ou Linguagem de Marcação de HiperTexto estabelece as convenções para a descrição do conteúdo de um documento hipertexto, conforme a World Web Consortium (W3C). URL, URI , URN Abreviação
Significado
URL
Uniform Resource Locator
URI
Uniform Resource Identifier
URN
Uniform Resource Name
URI é uma forma generalizada para se referir a um recurso: um URI inclui um URL e um URN, ou seja, URN se refere ao nome do recurso em si (por exemplo, um arquivo) e a URL se refere à localização desse recurso, e ambos formam um URI: a identificação uniforme de um mesmo recurso. Portanto, se estivermos tratando de recursos na Web, dar-se-á preferência à utilização dos termos URL ou URI sem se preocupar em fazer distinção entre os dois.
HTML, XHTML e XML XHTML é considerada o futuro da HTML e uma forma de transição para a XML. XHTML possui elementos de formatação da HTML 4.01, mas segue algumas regras definidas pela XML. XML é um padrão para descrição de dados, ao passo que HTML se limita à descrição de conteúdo. XHTML e XML são dois padrões que deverão receber muita atenção nos próximos anos.
12
Estrutura do protocolo HTTP
Estrutura do protocolo HTTP Arquitetura Cliente/Servidor O protocolo HTTP é baseado no paradigma de requisição e resposta. Um navegador é um cliente HTTP porque envia suas requisições a um servidor HTTP (Web server), que por sua vez responde de volta ao cliente.
Conectividade e Interface Conectividade e interface são duas características fundamentais da Internet. A interface do usuário é representada pelos navegadores. A rede e os protocolos envolvidos nas transferências entre clientes e servidores, que processam as requisições e retornam os mais variados tipos de mídias, são a base de toda essa estrutura.
Requisição e Resposta Um programa requisitante (cliente) estabelece uma conexão com um outro programa receptor (servidor) e envia uma requisição para o servidor na forma de um método de requisição, o URI, a versão do protocolo, seguida por uma mensagem contendo os modificadores da requisição, informação sobre o cliente, e possivelmente o conteúdo no corpo da mensagem. O servidor responde com uma linha de status (status line) incluindo sua versão de protocolo e um código de operação bem-sucedida ou um código de erro, seguido pelas informações do servidor, metainformações da entidade e possível conteúdo no corpo da mensagem. A comunicação ocorre geralmente sobre uma conexão TCP/IP na Internet, mas isso não impede que o protocolo HTTP seja implementado no topo de qualquer outro protocolo, contanto que a segurança seja garantida. A porta-padrão na qual os servidores HTTP atenderão às requisições é a de número 80, muito embora seja possível utilizar qualquer outra porta disponível no servidor. 13
Estrutura do protocolo HTTP
Os navegadores (browsers) Para a maioria das pessoas a ferramenta mais comum da Web é o navegador, afinal de contas é a janela do usuário para a Web, que permite visualizar os documentos e acessar os diversos serviços e aplicações disponíveis na Internet. Todos os navegadores surgiram a partir do navegador Mosaic, desenvolvido por Marc Andreessen na NCSA (National Center for Supercomputing Applications, na Universidade de Illinois, UrbanaChampaign). Devido à simplicidade e eficiência do protocolo HTTP é possível fornecer suporte a diversos tipos de clientes independentemente da arquitetura de computador utilizada. A flexibilidade em relação aos tipos de dados a serem enviados ou recebidos também permite fornecer suporte aos vários formatos de recursos (texto, som, imagem, e outros).
14
Estrutura do protocolo HTTP
Transações HTTP Uma transação consiste em: •
estabelecimento da conexão;
•
requisição (pelo cliente);
•
resposta (pelo servidor);
•
fechamento da conexão.
Estrutura das transações HTTP Como a maioria dos protocolos de rede, o HTTP utiliza o modelo cliente-servidor: um cliente HTTP abre uma conexão e envia mensagens de requisição para um servidor HTTP; o servidor retorna uma mensagem de resposta, geralmente contendo o recurso que fora requisitado. Após entregar o resultado, o servidor fecha a conexão (o que faz o HTTP ser um protocolo “stateless”, ou seja, não retém qualquer informação da conexão entre as transações). O formato das mensagens de requisição e resposta são semelhantes; os dois tipos de mensagens consistem em: •
uma linha inicial;
•
linhas de cabeçalho (podem não existir);
•
uma linha em branco obrigatória (CRLF); e
•
um corpo de mensagem opcional (ou seja, um arquivo, dados de uma consulta ou uma saída de um script).
Formato de uma mensagem HTTP: <linha inicial, diferente para a requisição e a resposta> Cabeçalho1: valor1 Cabeçalho2: valor2 Cabeçalho3: valor3 [Linha em branco obrigatória - CRLF] <corpo de mensagem opcional, como o conteúdo de arquivo ou resultado de um script ou consulta, podendo conter diversas linhas>
A linha inicial e os cabeçalhos devem terminar com CRLF, embora possa manipular os fins de linha apenas com LF. (CR e LF são equivalentes aos valores ASCII 13 e 10).
15