É através dos cabeçalhos (headers) que informações adicionais podem ser enviadas na requisição e na resposta.

Um header é composto por um nome, um signal de : e um valor.

Vendo no navegador

Podemos ver os dados contidos em uma mensagem, seja ela de requisição ou resposta, utilizando a ferramenta de desenvolvimento do navegador.

Os passos abaixo foram realizados no Google Chrome, mas devem funcionar em qualquer navegador:

  1. Acesse o site da DevMedia, como demonstra a Figura 1.
    Página web carregada no Google Chrome
    Figura 1. Página web carregada no Google Chrome
  2. Logo após ele ter sido carregado, pressione a tecla F12 do navegador para abrir a ferramenta de desenvolvimento e vá até a aba Network.

    Pressione F5 para recarregar a página, como mostra a Figura 2.

    Ferramenta do desenvolvedor, F12, aberta
    Figura 2. Ferramenta do desenvolvedor, F12, aberta

    Ao clicar sobre a URL solicitada, no caso abaixo api-rest-react-mobile, veremos ao lado os dados das mensagens trocadas entre o navegador e o servidor da DevMedia, como mostra a Figura 3.

    Dados das mensagens trocadas por cliente/servidor
    Figura 3. Dados das mensagens trocadas por cliente/servidor

    Você pode clicar sobre a opção view source para ver os detalhes, assim como mostra a Figura 4.

    Mensagem detalhada, sem a formatação do navegador
    Figura 4. Mensagem detalhada, sem a formatação do navegador

Abaixo temos uma lista dos principais cabeçalhos e seus significados:

  • Accept-Language: Determina qual linguagem é entendida pelo cliente e qual a sua região de preferência.
    Por exemplo, Accept-Language: pt-br, en;q=0.9,*;q=0.8 diz que preferimos que o conteúdo esteja em português do Brasil ou inglês, caso a primeira opção não esteja disponível.
  • Allow: Lista quais métodos HTTP são aceitos pelo servidor para o recurso acessado.
    Essa lista pode variar de acordo com a página que estamos acessando.
    Por exemplo, Allow: GET, POST, HEAD diz que a página acessada aceita apenas esses métodos.
  • Content-Language: É a forma do servidor dizer ao cliente quais linguagens estão disponíveis para o recurso atual.
    Por exemplo, Content-Language: pt-br determina que apenas a linguagem português do Brasil está disponível.
    A partir de Content-Language o cliente sabe como escolher o valor para Accept-Language.
  • Cookie: Contém o valor de um Cookie HTTP e é a forma do navegador enviar esse dado de volta ao servidor a cada requisição.
    Uma vez que o HTTP é stateless, algumas vezes precisamos recorrer a esse mecanismo para saber se um usuário permanece logado ou tem sessão ativa, por exemplo.
    Por exemplo, Cookie: PHPSESSID=298zf09hf012fh2; é o id da sessão criada pelo PHP. Através dela, o PHP pode determinar, no servidor, se duas requisições partiram de um mesmo computador.
  • Content-Type: Indica qual o tipo de mídia de um recurso.
    A partir dele o navegador pode determinar se o conteúdo recebido na resposta é uma página HTML, imagem, áudio, vídeo, etc.
    Por exemplo, Content-Type: text/html; charset=utf-8 indica que receberemos uma página em HTML na codificação de caracteres UTF-8.
  • User-Agent: Contém uma string de identificação da aplicação, sistema operacional e distribuidor do software que fez a requisição.
    Por exemplo, User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html) diz que o Google quem disparou a requisição a fim de coletar dados para o seu mecanismo de busca.