MOs cabeçalhos HTTP são os heróis não reconhecidos da comunicação web. Toda vez que você carrega uma página web, transmite um vídeo ou envia um formulário, dezenas de cabeçalhos trabalham nos bastidores para fazer isso acontecer. Eles carregam metadados críticos sobre requisições e respostas, controlam o comportamento de cache, aplicam políticas de segurança e habilitam recursos web modernos. Entender cabeçalhos HTTP não é mais apenas para desenvolvedores backend. Engenheiros frontend precisam deles para integração de API, equipes de DevOps dependem deles para otimização de desempenho, e profissionais de segurança os usam para proteger aplicações contra ataques. Este guia detalha tudo o que você precisa saber sobre cabeçalhos HTTP, desde conceitos básicos até implementações avançadas de segurança. Índice O Que São Cabeçalhos HTTP? Cabeçalhos de Requisição: O Que os Navegadores Enviam Cabeçalhos de Resposta: O Que os Servidores Retornam Cabeçalhos de Segurança: Protegendo Sua Aplicação Cabeçalhos de Cache: Otimização de Desempenho Cabeçalhos CORS: Compartilhamento de Recursos entre Origens Cabeçalhos Personalizados: Quando e Como Usá-los Depurando Cabeçalhos HTTP Erros Comuns e Como Evitá-los Melhores Práticas para Cabeçalhos HTTP Perguntas Frequentes Artigos Relacionados O Que São Cabeçalhos HTTP? Cabeçalhos HTTP são pares chave-valor enviados entre clientes e servidores durante a comunicação HTTP. Eles fornecem contexto essencial sobre a requisição ou resposta, incluindo tipo de conteúdo, codificação, credenciais de autenticação, diretivas de cache e políticas de segurança. Os cabeçalhos seguem um formato simples: Header-Name: value. Cada cabeçalho aparece em sua própria linha, e uma linha em branco separa os cabeçalhos do corpo da mensagem. Enquanto o HTTP/1.1 usa cabeçalhos em texto simples, o HTTP/2 e HTTP/3 os comprimem usando os algoritmos HPACK e QPACK respectivamente. Os cabeçalhos se dividem em quatro categorias principais: Cabeçalhos de requisição - Enviados pelo cliente para fornecer informações sobre a requisição ou o próprio cliente Cabeçalhos de resposta - Enviados pelo servidor para fornecer informações sobre a resposta Cabeçalhos de representação - Descrevem o formato e codificação do corpo da mensagem Cabeçalhos de payload - Contêm informações sobre os dados do payload, como comprimento do conteúdo Aplicações web modernas normalmente trocam 20-40 cabeçalhos por ciclo de requisição-resposta. Alguns são obrigatórios (como Host no HTTP/1.1), enquanto outros são opcionais mas altamente recomendados para segurança e desempenho. Dica profissional: Use a aba Network do DevTools do seu navegador para inspecionar cabeçalhos em tempo real. Isso é inestimável para depurar problemas de API e entender como serviços de terceiros se comunicam com sua aplicação. Cabeçalhos de Requisição: O Que os Navegadores Enviam Cabeçalhos de requisição informam ao servidor o que o cliente quer e o que ele pode manipular. Eles incluem informações sobre tipos de conteúdo aceitos, idiomas preferidos, credenciais de autenticação e as capacidades do cliente. Aqui estão os cabeçalhos de requisição mais importantes que você encontrará: Cabeçalho Propósito Exemplo Host Especifica o nome de domínio do servidor Host: example.com User-Agent Identifica o software cliente User-Agent: Mozilla/5.0... Accept Tipos de mídia que o cliente pode processar Accept: application/json Accept-Language Idiomas preferidos para a resposta Accept-Language: en-US,en;q=0.9 Accept-Encoding Algoritmos de compressão suportados Accept-Encoding: gzip, br Authorization Credenciais de autenticação Authorization: Bearer token123 Cookie Cookies armazenados para o domínio Cookie: session=abc123 Referer URL da página anterior Referer: https://google.com Entendendo o Cabeçalho Accept O cabeçalho Accept usa valores de qualidade (valores-q) para indicar preferência quando múltiplos formatos são aceitáveis. Os valores variam de 0 a 1, sendo 1 a prioridade mais alta: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Isso informa ao servidor: "Eu prefiro HTML ou XHTML, mas aceitarei XML com 90% de preferência, e qualquer outra coisa com 80% de preferência." Os servidores usam isso para realizar negociação de conteúdo e retornar o formato mais apropriado. O Cabeçalho User-Agent O cabeçalho User-Agent identifica o software cliente, sistema operacional e tipo de dispositivo. Embora útil para análises e servir conteúdo específico para dispositivos, também é notoriamente não confiável devido à falsificação de user-agent. A melhor prática moderna é usar detecção de recursos em vez de detecção de user-agent. No entanto, o cabeçalho permanece valioso para registro, depuração e detecção de bots. Dica rápida: Teste seus endpoints de API com diferentes strings User-Agent para garantir que não quebrem para clientes legítimos. Alguns servidores bloqueiam incorretamente requisições com user agents desconhecidos. Cabeçalhos de Resposta: O Que os Servidores Retornam Cabeçalhos de resposta fornecem metadados sobre a resposta do servidor, incluindo tipo de conteúdo, instruções de cache, políticas de segurança e informações do servidor. Eles são cruciais para renderização adequada de conteúdo, otimização de desempenho e segurança. Os principais cabeçalhos de resposta incluem: Cabeçalho Propósito Exemplo Content-Type Tipo de mídia do corpo da resposta Content-Type: text/html; charset=utf-8 Content-Length Tamanho do corpo da resposta em bytes Content-Length: 1234 Content-Encoding Algoritmo de compressão usado Content-Encoding: gzip Set-Cookie Envia cookies para o cliente Set-Cookie: id=a3; Secure; HttpOnly Location URL para redirecionamentos Location: https://example.com/new Server Informações sobre o software do servidor Server: nginx/1.18.0 Date Data e hora em que a resposta foi enviada Date: Mon, 31 Mar 2026 12:00:00 GMT ETag Identificador único para versão do recurso ETag: "33a64df551425fcc55e" Content-Type e Codificação de Caracteres O cabeçalho Content-Type é crítico para renderização adequada de conteúdo. Ele informa ao navegador como interpretar o corpo da resposta. Sempre inclua a codificação de caracteres (geralmente UTF-8) para prevenir problemas de codificação: Content-Type: application/json; charset=utf-8 Content-Type: text/html; charset=utf-8 Content-Type: image/png Cabeçalhos Content-Type ausentes ou incorretos fazem com que os navegadores adivinhem o tipo de conteúdo (MIME sniffing), o que pode levar a vulnerabilidades de segurança e problemas de renderização. O Cabeçalho Set-Cookie O cabeçalho Set-Cookie cria cookies no lado do cliente. Cookies modernos devem sempre incluir atributos de segurança: Secure - Enviar apenas por conexões HTTPS HttpOnly - Prevenir acesso JavaScript para reduzir risco de XSS SameSite - Controlar comportamento de cookie entre sites (Strict, Lax ou None) Max-Age ou Expires - Definir tempo de vida do cookie Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=Strict; Max-Age=3600 Cabeçalhos de Segurança: Protegendo Sua Aplicação Cabeçalhos de segurança são sua primeira linha de defesa contra vulnerabilidades web comuns. Eles instruem os navegadores a aplicar políticas de segurança que protegem os usuários de ataques como XSS, clickjacking e ataques man-in-the-middle. Toda aplicação em produção deve implementar estes cabeçalhos de segurança essenciais: Content-Security-Policy (CSP) CSP previne ataques XSS controlando quais recursos o navegador pode carregar. É um dos cabeçalhos de segurança mais poderosos, mas requer configuração cuidadosa: Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com Comece com uma política restritiva e relaxe-a gradualmente conforme necessário. Use Content-Security-Policy-Report-Only para testar políticas sem quebrar seu site. Strict-Transport-Security (HSTS) HSTS força os navegadores a usar HTTPS para todas as requisições futuras ao seu domínio, prevenindo ataques de downgrade de protocolo: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload A diretiva preload permite que você submeta seu domínio à lista de preload HSTS, que é codificada diretamente nos navegadores. Isso forneceexample.com # Send custom headers curl -H "
Os cabeçalhos HTTP são os heróis não reconhecidos da comunicação web. Toda vez que você carrega uma página web, transmite um vídeo ou envia um formulário, dezenas de cabeçalhos trabalham nos bastidores para fazer isso acontecer. Eles carregam metadados críticos sobre requisições e respostas, controlam o comportamento de cache, aplicam políticas de segurança e habilitam recursos web modernos.
Entender cabeçalhos HTTP não é mais apenas para desenvolvedores backend. Engenheiros frontend precisam deles para integração de API, equipes de DevOps dependem deles para otimização de desempenho, e profissionais de segurança os usam para proteger aplicações contra ataques. Este guia detalha tudo o que você precisa saber sobre cabeçalhos HTTP, desde conceitos básicos até implementações avançadas de segurança.
Cabeçalhos HTTP são pares chave-valor enviados entre clientes e servidores durante a comunicação HTTP. Eles fornecem contexto essencial sobre a requisição ou resposta, incluindo tipo de conteúdo, codificação, credenciais de autenticação, diretivas de cache e políticas de segurança.
Os cabeçalhos seguem um formato simples: Header-Name: value. Cada cabeçalho aparece em sua própria linha, e uma linha em branco separa os cabeçalhos do corpo da mensagem. Enquanto o HTTP/1.1 usa cabeçalhos em texto simples, o HTTP/2 e HTTP/3 os comprimem usando os algoritmos HPACK e QPACK respectivamente.
Header-Name: value
Os cabeçalhos se dividem em quatro categorias principais:
Aplicações web modernas normalmente trocam 20-40 cabeçalhos por ciclo de requisição-resposta. Alguns são obrigatórios (como Host no HTTP/1.1), enquanto outros são opcionais mas altamente recomendados para segurança e desempenho.
Host
Dica profissional: Use a aba Network do DevTools do seu navegador para inspecionar cabeçalhos em tempo real. Isso é inestimável para depurar problemas de API e entender como serviços de terceiros se comunicam com sua aplicação.
Cabeçalhos de requisição informam ao servidor o que o cliente quer e o que ele pode manipular. Eles incluem informações sobre tipos de conteúdo aceitos, idiomas preferidos, credenciais de autenticação e as capacidades do cliente.
Aqui estão os cabeçalhos de requisição mais importantes que você encontrará:
Host: example.com
User-Agent
User-Agent: Mozilla/5.0...
Accept
Accept: application/json
Accept-Language
Accept-Language: en-US,en;q=0.9
Accept-Encoding
Accept-Encoding: gzip, br
Authorization
Authorization: Bearer token123
Cookie
Cookie: session=abc123
Referer
Referer: https://google.com
O cabeçalho Accept usa valores de qualidade (valores-q) para indicar preferência quando múltiplos formatos são aceitáveis. Os valores variam de 0 a 1, sendo 1 a prioridade mais alta:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Isso informa ao servidor: "Eu prefiro HTML ou XHTML, mas aceitarei XML com 90% de preferência, e qualquer outra coisa com 80% de preferência." Os servidores usam isso para realizar negociação de conteúdo e retornar o formato mais apropriado.
O cabeçalho User-Agent identifica o software cliente, sistema operacional e tipo de dispositivo. Embora útil para análises e servir conteúdo específico para dispositivos, também é notoriamente não confiável devido à falsificação de user-agent.
A melhor prática moderna é usar detecção de recursos em vez de detecção de user-agent. No entanto, o cabeçalho permanece valioso para registro, depuração e detecção de bots.
Dica rápida: Teste seus endpoints de API com diferentes strings User-Agent para garantir que não quebrem para clientes legítimos. Alguns servidores bloqueiam incorretamente requisições com user agents desconhecidos.
Cabeçalhos de resposta fornecem metadados sobre a resposta do servidor, incluindo tipo de conteúdo, instruções de cache, políticas de segurança e informações do servidor. Eles são cruciais para renderização adequada de conteúdo, otimização de desempenho e segurança.
Os principais cabeçalhos de resposta incluem:
Content-Type
Content-Type: text/html; charset=utf-8
Content-Length
Content-Length: 1234
Content-Encoding
Content-Encoding: gzip
Set-Cookie
Set-Cookie: id=a3; Secure; HttpOnly
Location
Location: https://example.com/new
Server
Server: nginx/1.18.0
Date
Date: Mon, 31 Mar 2026 12:00:00 GMT
ETag
ETag: "33a64df551425fcc55e"
O cabeçalho Content-Type é crítico para renderização adequada de conteúdo. Ele informa ao navegador como interpretar o corpo da resposta. Sempre inclua a codificação de caracteres (geralmente UTF-8) para prevenir problemas de codificação:
Content-Type: application/json; charset=utf-8 Content-Type: text/html; charset=utf-8 Content-Type: image/png
Cabeçalhos Content-Type ausentes ou incorretos fazem com que os navegadores adivinhem o tipo de conteúdo (MIME sniffing), o que pode levar a vulnerabilidades de segurança e problemas de renderização.
O cabeçalho Set-Cookie cria cookies no lado do cliente. Cookies modernos devem sempre incluir atributos de segurança:
Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=Strict; Max-Age=3600
Cabeçalhos de segurança são sua primeira linha de defesa contra vulnerabilidades web comuns. Eles instruem os navegadores a aplicar políticas de segurança que protegem os usuários de ataques como XSS, clickjacking e ataques man-in-the-middle.
Toda aplicação em produção deve implementar estes cabeçalhos de segurança essenciais:
CSP previne ataques XSS controlando quais recursos o navegador pode carregar. É um dos cabeçalhos de segurança mais poderosos, mas requer configuração cuidadosa:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com
Comece com uma política restritiva e relaxe-a gradualmente conforme necessário. Use Content-Security-Policy-Report-Only para testar políticas sem quebrar seu site.
Content-Security-Policy-Report-Only
HSTS força os navegadores a usar HTTPS para todas as requisições futuras ao seu domínio, prevenindo ataques de downgrade de protocolo:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
A diretiva preload permite que você submeta seu domínio à lista de preload HSTS, que é codificada diretamente nos navegadores. Isso forneceexample.com # Send custom headers curl -H "
preload