Web Protocol

HTTP & HTTPS

HTTP é o protocolo da web. Métodos, códigos de status, headers e cache são o vocabulário sobre o qual cada API e cada carregamento de página são construídos.

beginner16 min readUpdated 15 de set. de 2026
request.js
js
// request.js
const res = await fetch("/api/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Accept: "application/json",
  },
  body: JSON.stringify({ name: "Ada" }),
});

console.log(res.status); // 201
const user = await res.json();
Modelo
Requisição / resposta
Métodos
GET, POST, PUT, PATCH, DELETE
Status
1xx a 5xx
Stateless
Cookies carregam o estado
Seguro
HTTPS sobre TLS
Moderno
HTTP/2 e HTTP/3

Por que importa

Por que o HTTP é importante

Universal

Todo navegador, API, proxy e CDN fala HTTP, o que o torna a interface mais interoperável no software.

Seguro por padrão

O HTTPS criptografa o tráfego e verifica o servidor, protegendo dados e usuários em redes hostis.

Cacheável

Headers corretos permitem que navegadores e CDNs reutilizem respostas, que é o ganho de performance mais barato disponível.

O panorama completo

As três partes do HTTP

Uma requisição descreve o que você deseja, uma resposta descreve o que aconteceu, e os headers carregam os metadados de ambos.

A requisição

Pedir

Um método, um caminho, headers e um corpo opcional descrevem o que o cliente deseja.

A resposta

Responder

Um código de status, headers e um corpo descrevem o resultado.

Headers

Metadados

Tipos de conteúdo, cache, cookies e políticas de segurança viajam junto com o payload.

HTTP em resumo

O núcleo do HTTP

Métodos

GET lê, POST cria, PUT substitui, PATCH atualiza, DELETE remove.

Códigos de status

2xx sucesso, 3xx redirecionamento, 4xx erro do cliente, 5xx erro do servidor.

Headers

Metadados como Content-Type, Accept, Authorization e Cache-Control.

Cookies

Pequenos valores que o navegador envia de volta automaticamente, usados para sessões.

Cache

ETag, Last-Modified e Cache-Control controlam a reutilização.

TLS

O HTTPS criptografa a conexão e prova a identidade do servidor.

Uma breve historia

Do HTTP/0.9 ao HTTP/3

  1. 1991

    HTTP/0.9

    Um único método para buscar HTML através de uma requisição simples.

    91
  2. 1997

    HTTP/1.1

    Conexões persistentes, host headers e cache tornam-se padrão.

    97
  3. 2015

    HTTP/2

    Multiplexação e compressão de headers resolvem muitos gargalos do HTTP/1.1.

    15
  4. 2022

    HTTP/3

    Um novo transporte sobre QUIC reduz a latência e melhora a confiabilidade.

    22
  5. Hoje

    HTTPS em todo lugar

    A criptografia é o padrão em toda a web.

    Hoje

O guia completo

HTTP & HTTPS: Tudo que voce precisa saber

O que é HTTP?

O HTTP, ou HyperText Transfer Protocol, é a forma como clientes e servidores se comunicam na web. Um cliente envia uma request descrevendo o que deseja; um servidor envia uma response descrevendo o que aconteceu. Cada carregamento de página, chamada de API, imagem e fonte trafega dessa maneira.

Trata-se de um protocolo simples, baseado em texto e stateless: cada requisição é independente e o servidor não lembra das anteriores, a menos que algo como um cookie carregue esse estado. Essa simplicidade é a razão pela qual o HTTP escalou para toda a web.

Requests

Uma requisição possui um método, um caminho (path), headers e, às vezes, um corpo (body).

POST /api/users HTTP/2
Host: example.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>

{ "name": "Ada" }

O método define qual tipo de ação está sendo realizada. O path identifica o recurso. Os headers carregam metadados, e o body carrega os dados para métodos como POST e PUT.

Método Propósito Seguro Idempotente
GET Ler um recurso Sim Sim
POST Criar ou disparar Não Não
PUT Substituir um recurso Não Sim
PATCH Atualizar parcialmente Não Não
DELETE Remover um recurso Não Sim

Seguro significa que a operação não altera o estado; idempotente significa que repeti-la tem o mesmo efeito que executá-la apenas uma vez. Essas propriedades são importantes para cache, retentativas (retries) e proxies.

Respostas e códigos de status

Uma resposta possui um código de status, headers e um corpo.

HTTP/2 201 Created
Content-Type: application/json
Location: /api/users/42

{ "id": 42, "name": "Ada" }

O código de status informa ao cliente o que aconteceu. Conheça os mais comuns:

  • 200 OK — sucesso.
  • 201 Created — um novo recurso foi criado.
  • 204 No Content — sucesso, mas sem corpo na resposta.
  • 301 / 302 — redirecionamentos permanentes e temporários.
  • 304 Not Modified — a cópia em cache ainda é válida.
  • 400 Bad Request — entrada inválida.
  • 401 Unauthorized — não autenticado.
  • 403 Forbidden — autenticado, mas sem permissão de acesso.
  • 404 Not Found — recurso não encontrado.
  • 500 Internal Server Error — falha no servidor.

Retornar o código correto não é pedantismo: clientes, caches e monitoramento dependem disso.

Headers

Headers são a camada de metadados. Headers de requisição comuns incluem Accept, Content-Type, Authorization, Cookie e User-Agent. Headers de resposta comuns incluem Content-Type, Content-Length, Cache-Control, Set-Cookie e headers de segurança como Content-Security-Policy.

// fetch.js
const res = await fetch("/api/posts", {
  headers: {
    Accept: "application/json",
    Authorization: `Bearer ${token}`,
  },
});

Headers são a forma como a negociação de conteúdo, autenticação, cache e políticas de segurança são expressas.

Cookies e sessões

O HTTP é stateless, por isso os servidores utilizam cookies para reconhecer usuários recorrentes. O servidor envia Set-Cookie, e o navegador envia esse cookie de volta em requisições subsequentes para a mesma origem.

Cookies de sessão devem ser sempre:

Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Lax; Path=/
  • HttpOnly impede que o JavaScript o leia, o que mitiga ataques de XSS.
  • Secure garante que ele seja enviado apenas via HTTPS.
  • SameSite limita o envio entre sites diferentes, o que ajuda a prevenir CSRF.

O guia de Web Security aborda o cenário completo.

Caching

O caching é o recurso de HTTP mais valioso para a performance. Dois mecanismos trabalham juntos:

  • Freshness (Frescor) com Cache-Control, que define por quanto tempo uma resposta pode ser reutilizada.
  • Validation (Validação) com ETag ou Last-Modified, que permite ao cliente perguntar “isso mudou?” e receber um 304 Not Modified quando não houve alterações.
# versioned assets: cache for a year
Cache-Control: public, max-age=31536000, immutable

# HTML: revalidate every time
Cache-Control: no-cache

Utilize fingerprints em seus assets com um hash de conteúdo e faça o cache de forma agressiva; um arquivo alterado receberá um novo nome. Sirva o HTML com um cache curto e revalide para que os deploys sejam detectados.

HTTPS e TLS

HTTPS é HTTP sobre TLS. O TLS faz três coisas:

  1. Criptografa o tráfego para que ele não possa ser lido durante o trânsito.
  2. Autentica o servidor com um certificado.
  3. Preserva a integridade para que os dados não possam ser alterados silenciosamente.

Obtenha um certificado (existem opções gratuitas), redirecione todo o tráfego HTTP para HTTPS e habilite o HSTS para evitar que os navegadores utilizem HTTP simples no seu domínio. Trate o HTTP como um protocolo legado.

Versões do HTTP

  • HTTP/1.1 — uma requisição por vez por conexão, razão pela qual os sites costumavam concatenar arquivos.
  • HTTP/2 — multiplexa várias requisições em uma única conexão e compacta headers, eliminando a maioria desses gambiarras.
  • HTTP/3 — roda sobre QUIC, um transporte baseado em UDP, reduzindo a latência de conexão e lidando melhor com a perda de pacotes.

Servir HTTPS geralmente habilita HTTP/2 ou HTTP/3 automaticamente através do seu servidor ou CDN. Raramente você precisará alterar seu código.

Melhores práticas

  • Use HTTPS em todos os lugares e redirecione HTTP para HTTPS com HSTS.
  • Retorne códigos de status precisos e corpos de erro significativos.
  • Mantenha os métodos seguros e idempotentes, conforme exigido por suas definições.
  • Defina Cache-Control e validadores deliberadamente.
  • Use cookies HttpOnly, Secure e SameSite para sessões.
  • Configure headers de segurança como CSP e X-Content-Type-Options.
  • Prefira HTTP/2 ou HTTP/3 e deixe a plataforma negociar a versão.

Erros comuns

  • Retornar 200 para erros, o que quebra clientes e caches.
  • Mutar dados com GET, o que é inseguro e pode ser cacheado ou sofrer prefetch.
  • Desativar o cache para tudo, prejudicando a performance.
  • Armazenar tokens de sessão em localStorage em vez de um cookie.
  • Esquecer de redirecionar HTTP para HTTPS.
  • Ignorar Content-Type e receber erros de parse.

Próximos passos

O HTTP é a linguagem universal da web, e dominá-lo traz benefícios em qualquer área. Aprofunde-se nos fundamentos da internet, entenda o DNS, faça requisições com JavaScript usando Fetch e proteja seu tráfego com o guia de Web Security.

Relatando o resultado

Retorne o código de status que corresponda ao que aconteceu para que clientes e caches se comportem corretamente.

Preferir
if (!post) {
  return res.status(404).json({
    message: "Post not found",
  });
}
Evitar
// always 200, even for errors
return res.json({ error: "not found" });

Fazendo cache de uma resposta

Headers de cache explícitos permitem que navegadores e CDNs reutilizem respostas com segurança em vez de buscá-las novamente a cada vez.

Preferir
Cache-Control: public, max-age=31536000, immutable
ETag: "a1b2c3"
Evitar
Cache-Control: no-store
# every visitor downloads
# everything again

Perguntas frequentes

Perguntas frequentes

Keep learning

Related topics from the roadmap.

$ comecar a aprender

Pronto para aprender HTTP / HTTPS?

Nosso tutorial interativo te guia por HTTP / HTTPS passo a passo — com quizzes e codigo real que voce pode executar no navegador.