O documento descreve o formato de mensagens e métodos do protocolo HTTP, incluindo que as mensagens de requisição e resposta possuem cabeçalhos e corpos, e listando métodos como GET, POST e HEAD.
3. Formato de Mensagens
Existem dois tipos de mensagem HTTP: requisição e resposta.
Requisição
Uma mensagem de requisição é formada por uma linha de requisição, as linhas de
cabeçalho e o corpo da mensagem.
A linha de requisição é formada pelo método, a URL e a versão http, todos separados por
um espaço. O método é o tipo de ação que a mensagem requer. Exemplos de métodos que são
muito usados em mensagens http são GET, POST e HEAD. A URL é o objeto sobre o qual a
mensagem quer realizar a ação(método) requisitada. E a versão http se refere à versão
requisitada pela mensagem.
As linhas de cabeçalho devem conter detalhes sobre a requisição para o servidor.
Podemos encaixar o cabeçalho das mensagens de requisição em três tipos.
Gerais: contêm informações referentes principalmente à própria mensagem, e são usadas para
controlar seu processamento e prover o receptor com informações extras.
Requisição: fornecem para o servidor mais informações sobre a natureza da requisição do
cliente, e dão ao cliente mais controle sobre como a requisição é gerenciada. Podem também
contar quais formatos ou códigos o cliente consegue processar.
Entidade: descrevem a entidade contida no corpo da mensagem, se existir alguma.
Normalmente a mensagem de requisição não irá possuir cabeçalhos de entidade, pois
dificilmente uma mensagem de requisição trará consigo um corpo de mensagem.
No corpo de mensagem, quando o mesmo existir numa mensagem de requisição, haverá
uma entidade, que pode ser um arquivo de música, uma imagem, uma página html, etc.
Resposta
Uma mensagem de resposta é formada por uma linha de estado, as linhas de cabeçalho e
o corpo da mensagem.
Na linha de estado, teremos a versão http, o código da resposta, e uma mensagem
associada ao código. A versão http se refere à versão da mensagem de resposta. O código da
resposta e a mensagem associada a ele trarão a informação sobre os resultados do
processamento da requisição do cliente. O código de resposta é um número de três dígitos que
indica o resultado formal que o servidor está comunicando ao cliente. Já a mensagem associada
é opcional, e é um texto descritivo que pode ser mostrado para o usuário humano do cliente
http, que poderá então saber o que o servidor respondeu.
Página 1
4. Exemplos de Códigos de estado:
200 OK: Requisição bem sucedida.
301 Moved Permanently: o objeto requisitado foi movido, e a resposta retornará uma nova URL,
com a localização do objeto.
400 Bad Request: o servidor não entendeu a requisição do cliente.
404 HTTP Not Found: O servidor não encontrou o objeto requisitado.
505 HTTP Version Not Supported: o servidor não suporta a versão http requisitada.
As linhas de cabeçalho devem trazer informações extras sobre a mensagem de resposta.
Podemos encaixar o cabeçalho das mensagens de resposta em três tipos.
Gerais: assim como nas mensagens de requisição, deverão conter informações referentes
principalmente à própria mensagem, não trazendo informações sobre o corpo da mensagem.
Resposta: provêem informação complementar visando ampliar as informações da linha de
estado. O servidor poderá também retornar informações extras no corpo da mensagem,
principalmente se ocorrerem erros.
Entidade: descrevem a entidade contida no corpo da mensagem, se existir alguma. São mais
frequentes nas mensagens de resposta.
No corpo de mensagem, quando o mesmo existir numa mensagem de requisição, haverá
uma entidade, que pode ser um arquivo de música, uma imagem, uma página html, etc.
Métodos
O protocolo HTTP define um conjunto de métodos que o cliente pode invocar, que
funcionam como comandos enviados ao servidor web. O protocolo HTTP 1.0, descrito na RFC
1945 (Berners-Lee et al., 1996), são eles GET HEAD e POST.
As mensagens de requisição e resposta do protocolo HTTP seguem um padrão, uma
requisição é constituída de uma linha informando o método a ser executado em seguida de um
cabeçalho que pode ter mais de uma linha e por ultimo o corpo da mensagem caso seja
necessário.
Segundo (TANEMBAUM, 2003) o método GET é uma solicitação ao servidor de envio de
página ou objeto exemplo:
Página 2
5. GET /index.html HTTP/1.1
Host: www.unemat.br
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr
Neste modelo de requisição podemos notar que na primeira linha está o tipo do método
(GET) o arquivo solicitado e por último o modelo do HTTP usado na segunda linha está o
endereço do host, de onde está hospedado o objeto, Connection: close mostra que não é uma
conexão persistente, User-agent: informa o browser utilizado e Accept-language: refere-se a
linguagem que o é solicitada, caso ela não exista no domínio será usado a linguagem default. A
resposta do servidor deve ser:
HTTP/1.1 200 OK
Connection: close
Date: Mon, 12 Dec 2005 04:15:03 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Sun. 5 May 2005 09:25:23 GMT
Content-Length: 6821
Content-Type: text/html
Analisando a mensagem de resposta identificamos na primeira linha o estado da
solicitação que no modelo acima está OK, o servidor está enviando o objeto solicitado,
Connection: close está informando que é uma conexão não persistente, Date é a data de acesso
ao objeto, Server o tipo de servidor web, Last-Modified data da última alteração ou criação do
arquivo Content-Length, tamanho do arquivo e por último Content-Type, responsável por
informar o tipo do arquivo.
Abaixo segue relação dos métodos usados:
GET: Método que solicita algum recurso ou objeto ao servidor.
HEAD: Solicita informações de um determinado objeto sem que esse seja enviado ao cliente
apenas para testa a validade do último acesso.
POST: Método usado para envio de arquivo dados ou formulário HTML ao servidor.
OPTIONS: Por meio desse método o cliente obtém as propriedades do servidor.
DELETE: Informa por meio do URL o objeto a ser deletado.
TRACE: Para enviar mensagem do tipo loopback para teste.
Página 3
6. PUT: Aceita criar ou modificar algum objeto do servidor.
CONNECT: Comunicar com servidores Proxy.
Bibliografia
Introdução às Redes de Computadores/WWW e HTTP http://bit.ly/RoXfna
Um pouco do protocolo HTTP http://bit.ly/S560Ba
Página 4