1. O que sao HTTP Headers
Headers HTTP sao metadados transmitidos junto com requisicoes e respostas HTTP. Eles fornecem informacoes contextuais sobre a mensagem — como o tipo de conteudo, as credenciais de autenticacao, as preferencias do cliente, as diretivas de cache e as politicas de seguranca.
Estruturalmente, um header e composto por um nome (case-insensitive) seguido de dois pontos e um valor. Por exemplo: Content-Type: application/json.
2. Headers de Requisicao vs Resposta
Headers sao divididos em tres categorias principais:
- Headers de requisicao: enviados pelo cliente (navegador, app) para o servidor. Exemplos: Authorization, Accept, User-Agent, Cookie.
- Headers de resposta: enviados pelo servidor de volta ao cliente. Exemplos: Content-Type, Set-Cookie, Cache-Control, Location.
- Headers de ambos: podem aparecer em requisicoes e respostas. Exemplos: Content-Type, Cache-Control, Date.
3. Headers de Seguranca Essenciais
Os headers de seguranca sao fundamentais para proteger aplicacoes web contra ataques comuns:
- Content-Security-Policy (CSP): define fontes confiáveis para scripts, estilos e outros recursos. Principal defesa contra XSS.
- Strict-Transport-Security (HSTS): forca o uso de HTTPS e previne ataques de downgrade.
- X-Frame-Options: impede que a pagina seja embutida em frames (protecao contra clickjacking).
- X-Content-Type-Options: previne MIME sniffing pelo navegador.
- Referrer-Policy: controla quanta informacao de referrer e compartilhada.
- Permissions-Policy: restringe acesso a APIs do navegador como camera e microfone.
"Implementar os 6 headers de seguranca listados acima resolve a maioria dos pontos de vulnerabilidade apontados em auditorias de seguranca web."
4. CORS: Cross-Origin Resource Sharing
CORS e um mecanismo de seguranca que controla quais origens podem acessar recursos de um servidor diferente. Requisicoes cross-origin precisam que o servidor envie os headers Access-Control-* corretos para serem permitidas pelo navegador.
5. Controle de Cache
Headers de cache como Cache-Control, ETag, Last-Modified e Expires permitem que servidores e clientes concordem sobre por quanto tempo uma resposta pode ser armazenada. Estrategias corretas de cache podem reduzir drasticamente o numero de requisicoes e melhorar a performance percebida.
6. Perguntas Frequentes
Headers sao case-sensitive?
Nao. De acordo com a RFC 7230, nomes de headers HTTP/1.1 sao case-insensitive. Porem, por convencao, usa-se Title-Case (Content-Type, Authorization, etc.).
Posso adicionar headers customizados?
Sim. Por convencao historica, headers customizados usavam o prefixo X- (como X-API-Key), mas essa convencao foi deprecada pela RFC 6648 em 2012. Hoje e aceito usar nomes descritivos sem prefixo.