O protocolo HTTP

O protocolo HTTP (HyperText Transfer Protocol) é o protocolo mais utilizado na Internet desde 1990. Anteriormente dedicado unicamente a transferir dados na internet (em especial páginas da web escritas em HTML, esse protocolo hoje permite transferir mensagens com cabeçalhos que descrevem o conteúdo da mensagem utilizando uma codificação de tipo MIMO.

O que é e para que serve o protocolo HTTP

O objetivo do protocolo HTTP é permitir uma transferência de arquivos (essencialmente no formato HTML) localizados graças a uma cadeia de caracteres chamada URL entre um navegador (o cliente) e um servidor Web.

A versão 0.9 destinava-se unicamente a transferir dados na Internet (em especial páginas Web escritas em HTML). A versão 1.0 do protocolo (a mais utilizada) permite, então, transferir mensagens com cabeçalhos que descrevem o conteúdo da mensagem utilizando uma codificação de tipo MIMO.

Como funciona a comunicação entre o navegador e o servidor

A comunicação entre navegador e servidor é feita em dois tempos:

Comunicação entre o navegador e o servidor

O navegador efetua um pedido HTTP e o servidor trata o pedido e, em seguida, envia uma resposta HTTP. Na verdade, a comunicação é mais demorada se considerarmos o processamento do pedido pelo servidor. Já que vamos nos interessar apenas pelo protocolo HTTP, o processamento do servidor não será esclarecido neste artigo.

Como é realizada a Requisição e Resposta HTTP

Um pedido HTTP é um conjunto de linhas enviado ao servidor pelo navegador. Ele compreende uma linha de pedido, que é a linha que especifica o tipo de documento solicitado, o método a ser aplicado e a versão do protocolo utilizada. A linha compreende três elementos que devem ser separados por um espaço: o método, o URL e a versão do protocolo usado pelo cliente (geralmente HTTP/1.0).

Também fazem parte do pedido HTTP os campos de cabeçalho do pedido, que é um conjunto de linhas facultativas que permitem dar informações adicionais sobre o pedido e/ou o cliente (navegador, sistema operacional etc.). Cada uma dessas linhas é composta por um nome que qualifica o tipo de cabeçalho, seguido de dois pontos (:) e do valor do cabeçalho.

Por fim, há o corpo do pedido, conjunto de linhas opcionais que devem ser separadas das linhas precedentes por uma linha vazia e que permite, por exemplo, um envio de dados com um comando POST durante a comunicação com o servidor, através de um formulário.

Um pedido HTTP tem a seguinte sintaxe (<crlf> significa quebra de linha):

VERSÃO DO METODO DO URL <crlf>  
Cabeçalho: Valor <crlf>
CABEÇALHO: Valor <crlf>
Linha vazia<crlf>
CORPO DO PEDIDO

Veja um exemplo de pedido HTTP:

GET [ [/ https://br.ccm.net/|blank]] HTTP/1.0  
Accept : text/html
If-Modified-Since : Saturday, 15-January-2017 14:37:11 GMT
User-Agent : Mozilla/52.0.1 (compatível; MSIE 5.0; Windows 10)

Lista dos comandos ou códigos HTTP

Comando Descrição
GET Pedido do recurso situado no URL especificado
HEAD Pedido do cabeçalho do recurso situado no URL especificado
POST Envio de dados ao programa situado no URL especificado
PUT Envio de dados ao URL especificado
DELETE Remoção do recurso situado no URL especificado

Como são estruturados os cabeçalhos

Nome do cabeçalho
Descrição
Accept
Tipo de conteúdo aceito pelo browser (ex: text/HTML). Ver tipos MIMO
Accept-Charset Jogo de caracteres esperado pelo browser
Accept-Encoding Codificação de dados aceite pelo browser
Accept-Language Linguagem esperada pelo browser (inglês por padrão)
Authorization Identificação do browser junto ao servidor
Content-Encoding Tipo de codificação do corpo do pedido
Content-Language Tipo de linguagem do corpo do pedido
Content-Length Comprimento do corpo do pedido
Content-Type Tipo de conteúdo do corpo do pedido (ex: text/HTML). Ver MIMO
Date Data de início de transferência dos dados
Forwarded Utilizado pelas máquinas intermediárias entre o browser e o servidor
From Permite especificar o e-mail do cliente
From Permite especificar se o documento deve ser enviado caso tenha sido alterado a partir de uma certa data
Link Relação entre dois URLs
Orig-URL URL de origem do pedido
Referer URL do link a partir da qual o pedido foi efetuado
User-Agent Cadeia dando informações sobre o cliente, como o nome e a versão do navegador, do sistema operacional

Como a resposta HTTP é executada

Uma resposta HTTP é um conjunto de linhas enviadas ao navegador pelo servidor. Ela compreende uma linha de status, que especifica a versão do protocolo utilizado e o estado do processamento do pedido através de um código e de um texto explicativo, e é composta por três elementos separados por um espaço: versão do protocolo utilizado, código de status e significado do código.

Além disso, há os campos do cabeçalho da resposta, conjunto de linhas facultativas que dão informações suplementares sobre a resposta e/ou o servidor. Cada linha é composta de um nome que qualifica o tipo de cabeçalho seguido de dois pontos (:) e do valor do mesmo. Ao final, está o corpo da resposta, que contém o documento pedido.

Uma resposta HTTP tem a seguinte sintaxe (<crlf> significa salto de linha):

EXPLICAÇÃO DO CÓDIGO DA VERSÃO-HTTP<crlf>  
Cabeçalho: Valor <crlf>
CABEÇALHO: Valor<crlf>
Linha vazia<crlf>
CORPO DA RESPOSTA

Exemplo de resposta HTTP:

HTTP/1.0 200 OK  
Date: Sat, 15 Jan 2000 14:37:12 GMT
Server: Microsoft-IIS/2.0
Content-Type: text/HTML
Content-Length : 1245
Last-Modified: Fri, 14 Jan 2000 08:25:13 GMT

Como são os cabeçalhos de resposta

Nome do cabeçalho
Descrição
Content-Encoding
Tipo de codificação do corpo da resposta
Content-Language Tipo de linguagem do corpo da resposta
Content-Length Comprimento do corpo da resposta
Content-Type Tipo de conteúdo do corpo da resposta (ex: text/HTML). Ver MIMO
Date Data de início de transferência dos dados
Expires Data limite de consumo dos dados
Forwarded Utilizado pelas máquinas intermediárias entre o browser e o servidor
Location Redirecionamento para um novo URL associado ao documento
Server Características do servidor que envia a resposta

Quais são os códigos de resposta

São os códigos que você vê quando o navegador não consegue mostrar a página pedida. O código de resposta é constituído por três algarismos, em que o primeiro indica a classe de status e os seguintes, a natureza exata do erro:

Código Mensagem Descrição
10x Mensagem de informação Estes códigos não são utilizados na versão 1.0 do protocolo
20x Sucesso Estes códigos indicam o bom desenrolar da transação
200 OK O pedido foi realizado corretamente
201 CREATED Segue um comando POST, indica o sucesso, o corpo do resto do documento deve indicar o URL onde o documento recentemente criado deveria encontrar-se
202 ACCEPTED O pedido foi aceito, mas o procedimento seguinte não foi realizado
203 PARTIAL INFORMATION Quando este código é recebido em resposta a um comando GET, isto indica que a resposta não está completa
204 NO RESPONSE O servidor recebeu o pedido mas não há informação a ser retornada
205 RESET CONTENT O servidor indica ao navegador para excluir o conteúdo dos campos de um formulário
206 PARTIAL CONTENT Trata-se de uma resposta a um pedido que comporta o cabeçalho range. O servidor deve indicar o cabeçalho content-range
30x Redirecionamento Estes códigos indicam que o recurso não está mais no lugar indicado
301 MOVED Os dados pedidos foram transferidos para um novo endereço
302 FOUND Os dados pedidos são de um novo URL, mas talvez tenham sido deslocados desde então
303 METHOD Isto implica que o cliente deve tentar um novo endereço, tentando um outro método além do GET
304 NOT MODIFIED Se o cliente efetuou um comando GET condicional (perguntando se o documento foi alterado desde a última vez) e se o documento não tiver sido alterado, ele devolve este código
40x Erro devido ao cliente Estes códigos indicam que o pedido está incorreto
400 BAD REQUEST A sintaxe do pedido está mal formulada ou impossível de validar
401 UNAUTHORIZED O parâmetro da mensagem dá as especificações das formas de autorização aceitáveis. O cliente deve reformular o seu pedido com os dados de autorização corretos
402 PAYMENT REQUIRED O cliente deve reformular o seu pedido com os dados de pagamento corretos
403 FORBIDDEN O acesso ao recurso foi recusado
404 NOT FOUND Muito comum! O servidor não encontrou nada no endereço indicado
50x Erro devido ao servidor Estes códigos indicam que houve um erro interno no servidor
500 INTERNAL ERROR O servidor encontrou uma condição inesperada que o impediu de satisfazer o pedido
501 NOT IMPLEMENTED O servidor não suporta o serviço pedido
502 BAD GATEWAY O servidor recebeu uma resposta inválida por parte do servidor que tentava acessar agindo como uma passarela ou um proxy
503 SERVICE UNAVAILABLE O servidor não pode responder no momento, pois o tráfego está muito denso (todas as linhas do seu correspondente estão ocupadas, tente novamente)
504 GATEWAY TIMEOUT A resposta do servidor demorou muito em relação ao que a gateway foi preparada para recebê-la (o tempo que lhe estava destinado esgotou-se)

Foto: © iStock.

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'O protocolo HTTP', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade