Quando você visita um site, seu navegador faz dezenas ou centenas de solicitações ao seu servidor em segundo plano. O servidor responde a essas solicitações entregando todos os dados e arquivos que o site precisa carregar. Entretanto, o processo real é mais complexo do que isso.

Entender como os pedidos HTTP funcionam é essencial se você quiser aumentar o desempenho do seu site. Algumas dessas medidas de otimização envolvem minimizar e comprimir as solicitações. Essencialmente, você está otimizando seu servidor para responder melhor às requisições HTTP.

Confira nosso guia em vídeo para solicitações HTTP

Neste artigo, nós vamos dar uma olhada mais detalhada em como os pedidos HTTP funcionam. Nós também mostraremos a estrutura das solicitações HTTP e como resolvê-las se necessário. Vamos começar a trabalhar!

O que é HTTP?

HTTP é um protocolo. Na verdade, a sigla significa HyperText Transfer Protocol (Protocolo de Transferência de Hipertexto). Este protocolo rege a estrutura e a linguagem das solicitações e respostas que ocorrem entre clientes e servidores. Os clientes geralmente são navegadores web, mas eles podem vir de muitas formas, como robôs de busca.

Quando você visita sites através de um navegador, toda a conexão é feita via HTTP. O protocolo permite que você receba dados, incluindo texto, imagens, vídeos, folhas de estilo, scripts, e muito mais.

HTTP tem sido um dos backbones da web desde o início dos anos 90. Nas últimas décadas, ele tem evoluído para se tornar mais eficiente. A segunda metade dos anos 2010 viu o desenvolvimento do HTTP/2, que permite aos clientes carregar recursos simultaneamente ao invés de assincronamente. Isto resulta em um aumento maciço de desempenho.

Em 2022, 46% da web está usando HTTP/2. Agora, já há discussões sobre a adoção do HTTP/3, que também é conhecido como HTTP-over-QUIC. O HTTP/3 funciona com o protocolo UDP, o que lhe dá uma vantagem sobre as conexões TCP tradicionais (que é o que HTTP e HTTP/2 usam).

O que é uma solicitação HTTP (e como funciona)?

Pense em uma solicitação HTTP como seu navegador conectando-se ao servidor e pedindo um recurso específico ou enviando dados para ele. Existem vários tipos de requisição HTTP, que alteram completamente o tipo de resposta que você recebe do servidor. Os mais comuns são:

  1. GET. Este é de longe o método de solicitação HTTP mais frequentemente utilizado. Uma solicitação GET pede ao servidor uma peça específica de informação ou recurso. Quando você se conecta a um site, seu navegador geralmente envia várias solicitações GET para receber os dados que ele precisa para que a página seja carregada.
  2. HEAD. Com uma solicitação HEAD, você recebe apenas as informações do cabeçalho da página que você deseja carregar. Você pode usar este tipo de requisição HTTP para descobrir o tamanho de um documento antes de baixá-lo usando GET.
  3. POST. Seu navegador usa o método de requisição POST HTTP quando ele precisa enviar dados para o servidor. Por exemplo, se você preencher um formulário de contato em um site e enviá-lo, você está usando uma solicitação POST para que o servidor receba essa informação.
  4. PUT. PUT são similares em funcionalidade ao método POST. Entretanto, ao invés de enviar dados, você usa as solicitações PUT para atualizar informações que já existem no servidor final.

Existem alguns outros tipos de solicitações HTTP que você pode usar, incluindo os métodos DELETE, PATCH e OPTIONS. No entanto, eles são relativamente incomuns no uso cotidiano.

O envio de uma solicitação HTTP envolve o envio de uma mensagem para o servidor receptor em um formato específico. O servidor retorna uma resposta e o cliente toma as devidas providências. Por exemplo, ele pode carregar recursos ou redirecioná-lo para outra página.

Quando você recebe um erro HTTP, geralmente é porque o servidor não consegue atender a sua solicitação. O código de erro que você recebe deve explicar o porquê. Algumas das causas mais comuns de erros HTTP incluem ser incapaz de se conectar ao servidor e encontrar os recursos que foram solicitados.

Experimente nossa ferramenta de verificação de cabeçalho HTTP para revisar o status de qualquer página.

Uma introdução às estruturas de solicitação e resposta HTTP

As solicitações e respostas HTTP compartilham estruturas similares. Se você quer ser capaz de analisar solicitações e respostas HTTP para entender possíveis erros com seu site, é importante que você entenda essas estruturas.

De modo geral, os pedidos HTTP são divididos em três seções. Vamos dar uma olhada de perto em cada uma delas.

Linha de requisição HTTP

Toda solicitação HTTP começa com uma linha que indica que tipo de método você está usando e a versão do protocolo HTTP. Por exemplo, o início de uma requisição HTTP GET poderia se parecer com isto:

GET /XXX HTTP/1.1

Neste caso, o parâmetro “XXX” após o método GET indica o arquivo que você quer receber.

O início de uma resposta HTTP reitera a versão do protocolo que ambas as partes estão usando. Ele também inclui um código HTTP que corresponde ao status da resposta.

Se você visitar um site e ele for carregado com sucesso, você verá uma mensagem de sucesso HTTP 2XX:

HTTP/1.1 200 OK

Esta parte da resposta HTTP exibirá códigos de erro se o recurso não conseguir carregar por qualquer motivo. Se o servidor não conseguir encontrar a página, você verá um cabeçalho de resposta como este:

HTTP/1.1 400 OK

Se você entender os métodos de requisição e os códigos de status HTTP, a linha inicial diz exatamente que tipo de transação está acontecendo entre o cliente e o servidor. No geral, esta é a parte mais simples da requisição para entender.

Cabeçalhos de requisição

Os cabeçalhos de solicitação vêm logo após as linhas de solicitação e eles fornecem informações adicionais sobre a transação. O cabeçalho especifica informações sobre o host, o software do servidor web que o cliente final usa, o que é o agente de usuário do cliente, e muito mais.

Aqui está como é um cabeçalho de requisição HTTP:

Host: website.com

User-Agent: Chrome/5.0 (Windows 10)

Accept-Language: en-US

Accept-Encoding: gzip, deflate

Connection: keep-alive</code.

Esses são apenas alguns exemplos dos parâmetros do cabeçalho HTTP que você pode usar. Aqui está o que cada linha desse cabeçalho significa:

  • Host: Este é o IP ou URL do servidor para o qual você está fazendo a solicitação.
  • User-agent: Este parâmetro contém informações sobre o cliente e seu Sistema Operacional (SO). Tipicamente, isto descreve o navegador que você está usando e sua versão.
  • Accept-language: Esta linha diz ao servidor qual idioma o cliente prefere, caso haja múltiplas versões do arquivo que você está solicitando.
  • Accept-encoding: Esta linha indica o tipo de codificação ou compressão que o cliente pode processar.
  • Conexão: Este parâmetro diz ao servidor se deve manter a conexão viva ou definir um timeout para ela. Se o tempo limite de conexão for esgotado antes de completar o pedido, você receberá um erro.

Vamos montar a linha de pedidos e os cabeçalhos para ter uma ideia da estrutura geral que você precisará usar:

GET /XXX HTTP/1.1

Host: website.com

User-Agent: Chrome/5.0 (Windows 10)

Accept-Language: en-US

Accept-Encoding: gzip, deflate

Connection: keep-alive</code.

No exemplo acima, você está enviando um pedido de GET para o host do site.com para um recurso específico. Agora, vamos ver como o cabeçalho na resposta pode parecer:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2022 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT

Content-Length: 88

Content-Type: text/html

Connection: Closed</code.

O cabeçalho de resposta começa na segunda linha e inclui a data da conexão e informações sobre qual servidor web e SO o host usa. Se você estiver solicitando um arquivo, o cabeçalho também mostrará informações sobre sua data de última modificação, quanto tempo o arquivo é, e com que tipo de conteúdo você está lidando. A linha final lhe diz que a conexão está fechada desde que a solicitação está completa.

As informações e parâmetros nos cabeçalhos podem variar dependendo do tipo de solicitação que você está fazendo. No entanto, a estrutura geral permanece a mesma.

Corpo da mensagem HTTP

O corpo da mensagem é a parte mais direta de uma solicitação HTTP. Ele contém os dados que você está enviando ou recebendo, dependendo do método de requisição que você está usando.

Se você solicitar um arquivo HTML usando o método GET, você pode receber uma resposta estruturada desta forma:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2022 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT

Content-Length: 88

Content-Type: text/html

Connection: Closed

<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”></code.

O resto do arquivo vai para aqui

O corpo de uma solicitação ou resposta HTTP é separado do cabeçalho usando uma única linha vazia. Nós não incluímos um arquivo HTML completo no exemplo acima para evitar confusão.

Como monitorar e solucionar problemas de solicitações HTTP

Há várias maneiras de monitorar solicitações HTTP em seu site, como por exemplo, usando ferramentas de Gerenciamento de Desempenho de Aplicativos (APM). Elas permitem que você monitore “transações” em seus sites, como tarefas PHP, erros HTTP, solicitações de banco de dados, e mais.

Se você é um usuário Kinsta, você tem acesso a uma ferramenta APM integrada que você pode habilitar a partir do painel do MyKinsta. A ferramenta APM da Kinsta permitirá que você verifique que tipo de solicitações HTTP externas seu site está recebendo e monitore seus status:

MyKinsta
MyKinsta

Ele também permite que você monitore erros HTTP recorrentes, o que vem a calhar na hora de solucionar problemas em seu site. Se você estiver vendo um erro de status HTTP dentro do seu site, você pode habilitar o Kinsta APM, replicar o erro e obter acesso aos detalhes da solicitação.

A ferramenta APM também pode ajudá-lo a identificar ataques DDoS, o que deve ser bastante fácil de identificar, pois você verá uma barragem de pedidos HTTP. Saber se você está lidando com um ataque DDoS ou com um pico no tráfego o ajudará a descobrir como lidar com a situação.

Resumo

Entender o que são pedidos HTTP e como eles funcionam pode ajudar você a resolver problemas com o seu site. Quando você se depara com erros HTTP, isso significa que o servidor não pôde atender à solicitação feita pelo cliente. Se você sabe qual foi essa solicitação e entende o código de erro na resposta HTTP, você tem mais do que informações suficientes para corrigir o problema.

Para entender um pedido HTTP, você precisará saber quais métodos ele pode usar. Além disso, você precisará saber como as solicitações e respostas HTTP são estruturadas, e entender os diferentes códigos de status HTTP.

Se você usar a hospedagem de aplicativo, a hospedagem de banco de dados e a hospedagem gerenciada de WordPress da Kinsta, você automaticamente terá acesso a uma ferramenta APM que você pode usar para monitorar as solicitações HTTP do seu site.

Inscreva-se hoje mesmo no Kinsta e tenha acesso a este recurso essencial!