Início·Códigos e cabeçalhos HTTP

132 códigos de status e cabeçalhos HTTP

O que 404 e 500 realmente significam e o que Content-Type ou Cache-Control fazem, em uma linha.

Códigos de status

1xx Informativos4

Um aviso de progresso; a resposta real vem depois.

2xx Sucesso10

O pedido deu certo.

3xx Redirecionamento7

Vá para outro lugar: o que muda é ser permanente ou temporário.

4xx Erro do cliente29

O problema está no pedido; repeti-lo igual vai falhar de novo.

400 Bad RequestO pedido está malformado e não pode ser lido.401 UnauthorizedVocê não disse quem é; entrar na conta costuma resolver.402 Payment RequiredÉ preciso pagar: está no padrão, mas quase não se usa.403 ForbiddenO servidor sabe quem você é e mesmo assim nega; entrar na conta pode não mudar.404 Not FoundNão há nada nesse endereço: a URL está errada ou a página sumiu.405 Method Not AllowedO endereço existe, mas não aceita esse método.406 Not AcceptableO servidor não consegue entregar o formato pedido.407 Proxy Authentication RequiredUm proxy no meio exige autenticação antes.408 Request TimeoutO servidor esperou e o pedido nunca chegou por inteiro.409 ConflictO pedido conflita com o estado atual: típico de duas edições ao mesmo tempo.410 GoneRemovido de propósito e não volta: uma despedida mais clara que 404.411 Length RequiredO pedido precisa informar o tamanho do corpo e não informou.412 Precondition FailedUma condição enviada com o pedido não se confirmou.413 Content Too LargeO corpo enviado passa do tamanho que o servidor aceita.414 URI Too LongA URL é longa demais: costuma acontecer ao empilhar parâmetros.415 Unsupported Media TypeO servidor não lida com o tipo de conteúdo enviado.416 Range Not SatisfiableO intervalo pedido está fora do arquivo.417 Expectation FailedNão dá para cumprir o que o cabeçalho Expect pediu.418 I'm a teapotUm código de brincadeira: o bule se recusa a fazer café. Veio de um RFC de primeiro de abril.421 Misdirected RequestEste servidor não é o certo para esse pedido.422 Unprocessable ContentA sintaxe está certa, mas o conteúdo quebra as regras.423 LockedO recurso está bloqueado.424 Failed DependencyUm pedido anterior falhou, então este também não segue.425 Too EarlyO servidor não arrisca processar algo que pode ser repetição.426 Upgrade RequiredÉ preciso mudar de protocolo para continuar.428 Precondition RequiredO pedido precisa levar uma condição: assim se evitam sobrescritas.429 Too Many RequestsVocê fez pedidos demais; Retry-After diz quando tentar de novo.431 Request Header Fields Too LargeOs cabeçalhos são grandes demais: costuma ser cookie acumulado.451 Unavailable For Legal ReasonsBloqueado por motivos legais; o número alude ao romance Fahrenheit 451.

5xx Erro do servidor11

O problema está no servidor; costuma valer a pena tentar depois.

Cabeçalhos

Cabeçalhos de pedido28

Cabeçalhos que o navegador anexa ao enviar ao servidor.

AcceptInforma quais formatos o cliente aceita.Accept-EncodingLista as compressões que o cliente entende; gzip ou br reduzem muito o tamanho.Accept-LanguageDeclara os idiomas preferidos; sites multilíngues escolhem por aqui.AuthorizationLeva as credenciais que provam quem você é: um token ou usuário e senha.CookieDevolve os cookies que o servidor guardou antes.HostIndica o domínio solicitado: permite que um servidor hospede vários sites.If-Modified-SincePede o recurso só se mudou depois daquele horário.If-None-MatchPede o recurso só se o ETag for diferente: é assim que o cache revalida.OriginInforma a origem do pedido; o navegador adiciona e o CORS se baseia nele.RangePede só parte do arquivo: a base da retomada e da busca em vídeo.RefererIndica a página de origem; o erro de grafia ficou fixado no padrão.User-AgentDescreve o navegador e o aparelho; hoje quase tudo é camuflagem.Sec-Fetch-DestDiz para que serve o pedido: imagem, script, documento.Sec-Fetch-ModeIndica se o pedido é de mesma origem, CORS ou navegação.Sec-Fetch-SiteDiz se o pedido veio do mesmo site ou de outro.DNTPede para não ser rastreado; não obriga nada e costuma ser ignorado.ExpectConsulta o servidor antes de enviar um corpo grande.ForwardedGuarda os dados originais do cliente após passar por proxies.FromLeva o e-mail de quem faz o pedido; rastreadores usam como contato.If-MatchSó prossegue se o ETag bater: evita sobrescrever mudanças alheias.If-RangeRetoma se o arquivo não mudou; caso contrário, começa do zero.Max-ForwardsLimita por quantos proxies o pedido pode passar.Proxy-AuthorizationCredenciais para o proxy, não para o servidor de origem.TELista as codificações de transferência aceitas.Upgrade-Insecure-RequestsPede ao servidor que troque links http por https.X-Forwarded-ForLeva o IP original do cliente através de proxies; não é padrão, mas é muito usado.X-Forwarded-ProtoDiz se o pedido original chegou por http ou https.X-Requested-WithUma convenção antiga para marcar pedidos feitos por JavaScript.

Cabeçalhos de resposta30

Cabeçalhos que o servidor anexa ao responder.

Access-Control-Allow-OriginIndica quais origens podem ler esta resposta: o coração do CORS.Access-Control-Allow-MethodsLista os métodos permitidos em pedidos de outra origem.Access-Control-Allow-HeadersLista os cabeçalhos permitidos em pedidos de outra origem.Access-Control-Allow-CredentialsDecide se pedidos de outra origem podem levar cookies.Access-Control-Max-AgeDiz por quanto tempo o resultado do preflight pode ser cacheado.AgeHá quanto tempo a resposta está no cache.AllowLista os métodos que o endereço aceita; acompanha um 405.Content-DispositionDecide se exibe ou baixa, e leva o nome do arquivo.Content-Security-PolicyControla de onde scripts e imagens podem vir: a cerca contra XSS.ETagUma impressão digital desta versão: muda o conteúdo, muda a etiqueta, e o cache percebe.ExpiresMarca o momento após o qual a resposta é considerada velha.Last-ModifiedQuando mudou pela última vez; pedidos condicionais comparam com isso.LocationO endereço para onde ir; acompanha redirecionamentos e o 201.Permissions-PolicyControla quais documentos podem usar câmera, microfone ou localização.Referrer-PolicyDecide quanta informação de origem é enviada.Retry-AfterDiz quando tentar de novo; acompanha um 429 ou 503.ServerDiz o software do servidor; detalhe demais dá pista a atacantes.Set-CookieColoca um cookie no navegador; use HttpOnly e Secure para protegê-lo.Strict-Transport-SecurityDiz ao navegador para usar só https neste site daqui em diante.Timing-Allow-OriginPermite que outra origem leia as medições de desempenho.VaryIndica quais cabeçalhos mudam a resposta; o cache se guia por ela.WWW-AuthenticateIndica o esquema de autenticação; acompanha um 401.X-Content-Type-OptionsImpede o navegador de adivinhar outro tipo de conteúdo.X-Frame-OptionsImpede que outros sites coloquem esta página num quadro.X-XSS-ProtectionLigava um antigo filtro XSS do navegador; hoje o CSP o substitui.Cross-Origin-Opener-PolicyIsola o contexto para que outras origens não segurem a janela.Cross-Origin-Resource-PolicyIndica quais origens podem sequer buscar este recurso.Cross-Origin-Embedder-PolicyExige que recursos de outra origem deem permissão explícita.Content-RangeIndica qual parte do total foi enviada; acompanha um 206.Accept-RangesIndica se aceita pedidos por intervalo; bytes significa que dá para retomar.

Nos dois sentidos13

Cabeçalhos que podem aparecer nos dois lados.

Como ler

  • O primeiro dígito do código carrega o sentido: 4 aponta para o pedido, 5 para o servidor.
  • 404 quer dizer "não existe"; 403, "existe, mas não para você". Trocar os dois atrasa a investigação.
  • Nomes de cabeçalho não diferenciam maiúsculas: Content-Type e content-type são o mesmo.
  • Problemas de cache e CORS costumam caber numa linha de cabeçalho, visível na aba de rede.

Perguntas frequentes

Q. Qual a diferença entre 404 e 403?

404 diz que não há nada nesse endereço; 403 diz que há, mas você não pode ver. Alguns servidores respondem 404 de propósito para esconder que o recurso existe.

Q. Dá para fazer algo diante de um 500?

Códigos que começam com 5 são problema do servidor, então em geral só resta esperar. Já um 502 ou 504 fica entre dois servidores e costuma passar ao tentar de novo.

Q. Como escolher entre 301 e 302?

Use 301 quando o endereço mudou de vez e 302 quando é temporário. Lembre que navegadores e buscadores guardam um 301 por muito tempo, o que dificulta voltar atrás.

Q. Os nomes de cabeçalho diferenciam maiúsculas?

Não. Content-Type e content-type são o mesmo, e desde o HTTP/2 são enviados em minúsculas por definição.

Q. Por que ocorrem erros de CORS?

Quando a página tenta ler uma resposta de outra origem, o navegador bloqueia a menos que o servidor permita com Access-Control-Allow-Origin. O servidor respondeu: é o navegador que não entrega o corpo ao seu código, e por isso a aba de rede mostra algo que o script não lê.