Pular para o conteúdo

Referência de códigos HTTP

HTTP Status Reference

Explica cada código de status com o significado na especificação, a cacheabilidade e os erros que as pessoas cometem com ele.

Uma referência pesquisável de todos os códigos de status HTTP: o que cada um significa, qual RFC o define, se um cache pode armazená-lo por padrão e com qual cabeçalho ele precisa ser enviado. A busca casa com o código, o nome e o resumo, e aceita consultas em inglês, coreano, japonês, chinês simplificado e espanhol — não em português.

🔒 Roda inteiramente no seu navegadorhttpstatusreference

Procura no código, no nome, no resumo e nas notas, em inglês, coreano, japonês, chinês simplificado e espanhol.

Classe

404 Not Found

404Not Found

Não há recurso nenhum nesta URL.

Erro do cliente — A culpa é da requisição. Repeti-la sem mudar nada vai falhar do mesmo jeito.

Definido em
RFC 9110 §15.5.5
Cacheável por padrão
sim

É cacheável por padrão — um fato que surpreende todo mundo na primeira vez que uma CDN continua devolvendo 404 para uma página que já existe.

62 de 62 códigos

Todos os códigos de status HTTP, com o significado de cada um.
CódigoNomeSignificaCacheável
100ContinueO cliente pode continuar e enviar o corpo da requisição.não
101Switching ProtocolsO servidor está mudando para o protocolo que o cliente pediu.não
102ProcessingWebDAV: a requisição está sendo processada.não
103Early HintsCabeçalhos preliminares, para o cliente começar a pré-carregar antes da resposta de verdade.não
200OKA requisição deu certo.sim
201CreatedUm recurso novo foi criado.não
202AcceptedA requisição foi aceita, mas ainda não foi executada.não
203Non-Authoritative InformationUm proxy alterou a resposta que está repassando.sim
204No ContentSucesso, e de propósito não há corpo.sim
205Reset ContentSucesso; o cliente deveria limpar o formulário que enviou.não
206Partial ContentO intervalo de bytes que foi pedido.sim
207Multi-StatusWebDAV: um corpo XML com um status para cada sub-requisição.não
208Already ReportedWebDAV: este membro já tinha sido enumerado.não
226IM UsedA resposta é o resultado de aplicar manipulações de instância.não
300Multiple ChoicesExistem várias representações; escolha uma.sim
301Moved PermanentlyO recurso tem uma URL nova, para sempre.sim
302FoundUm redirecionamento temporário.não
303See OtherVá buscar a outra URL com GET.não
304Not ModifiedA cópia em cache ainda serve.não
305Use ProxyObsoleto: o cliente deveria usar o proxy indicado.não
307Temporary RedirectUm redirecionamento temporário que mantém o método.não
308Permanent RedirectUm redirecionamento permanente que mantém o método.sim
400Bad RequestA requisição está malformada e o servidor não vai processá-la.não
401UnauthorizedÉ preciso se autenticar, ou as credenciais dadas foram recusadas.não
402Payment RequiredReservado, e nunca recebeu um significado.não
403ForbiddenO servidor entendeu, e se recusa.não
404Not FoundNão há recurso nenhum nesta URL.sim
405Method Not AllowedA URL existe; este método não se aplica a ela.sim
406Not AcceptableNada do que o servidor consegue produzir bate com o cabeçalho `Accept`.não
407Proxy Authentication RequiredO proxy quer credenciais.não
408Request TimeoutO cliente demorou demais para enviar a requisição.não
409ConflictA requisição conflita com o estado atual.não
410GoneEstava aqui e, de propósito, não vai voltar.sim
411Length RequiredÉ preciso um cabeçalho `Content-Length`.não
412Precondition FailedUma condição `If-Match` ou `If-Unmodified-Since` não foi satisfeita.não
413Content Too LargeO corpo é maior do que o servidor aceita.não
414URI Too LongA URL é mais longa do que o servidor aceita.sim
415Unsupported Media TypeO `Content-Type` do corpo não é um dos que o servidor trata.não
416Range Not SatisfiableO intervalo pedido cai fora do recurso.não
417Expectation FailedNão dá para atender ao cabeçalho `Expect`.não
418I'm a teapotUma piada de primeiro de abril de 1998 que nunca foi embora.não
421Misdirected RequestEste servidor não consegue produzir uma resposta para esta autoridade.não
422Unprocessable ContentBem formado, mas semanticamente errado.não
423LockedWebDAV: o recurso está travado.não
424Failed DependencyWebDAV: uma requisição anterior da sequência falhou.não
425Too EarlyO servidor não quer correr o risco de repetir uma requisição enviada como dados iniciais.não
426Upgrade RequiredO cliente precisa trocar de protocolo.não
428Precondition RequiredO servidor exige que a requisição seja condicional.não
429Too Many RequestsLimite de requisições atingido.não
431Request Header Fields Too LargeOs cabeçalhos são grandes demais.não
451Unavailable For Legal ReasonsBloqueado por uma exigência legal.sim
500Internal Server ErrorAlgo deu errado e o servidor não tem nada mais específico a dizer.não
501Not ImplementedO servidor não suporta esse método de jeito nenhum.sim
502Bad GatewayUm servidor mais acima mandou algo inválido.não
503Service UnavailableTemporariamente sem condições de atender à requisição.não
504Gateway TimeoutUm servidor mais acima não respondeu a tempo.não
505HTTP Version Not SupportedA versão do HTTP que vem na requisição não é suportada.não
506Variant Also NegotiatesUma configuração errada da negociação de conteúdo.não
507Insufficient StorageWebDAV: não há espaço suficiente para guardar a representação.não
508Loop DetectedWebDAV: um laço infinito durante o processamento.não
510Not ExtendedSão necessárias mais extensões.não
511Network Authentication RequiredUm portal cativo quer que você faça login.não

Os que se confundem

401 quer dizer “não sei quem você é”: mande credenciais e tente de novo. 403 quer dizer “sei quem você é e a resposta é não”. Se as credenciais eram válidas mas insuficientes, é 403.
O 400 é para uma requisição que o servidor não consegue ler. O 422 é para uma que ele leu perfeitamente e com a qual não concorda. Dá para repetir um 422 com outros dados; um 400 costuma significar que o próprio cliente está quebrado.
O primeiro eixo é a permanência (301/308 permanentes, 302/307 temporários) e o segundo é a preservação do método (307/308 mantêm o método, 301/302 historicamente não). Na dúvida, numa API use 307 ou 308.
Os dois vêm de um proxy, não da sua aplicação. O 502 é “o de cima respondeu besteira ou morreu”; o 504 é “o de cima nunca respondeu”. O segundo é um tempo limite que dá para ajustar; o primeiro é uma queda que você tem que consertar.
Os dois querem dizer que ali não há nada. O 410 quer dizer, além disso, que aquilo nunca mais volta, e os buscadores agem sobre isso em dias, não em meses.
O 405 é “nesta URL não, mas veja o que dá” — e precisa mandar um cabeçalho `Allow`. O 501 é “este servidor não implementa esse método em lugar nenhum”.
Aqui “cacheável” quer dizer cacheável de forma heurística: a RFC 9110 §15.1 lista os códigos que um cache pode guardar quando nada diz o contrário. O 404 está nessa lista, e é assim que uma CDN acaba servindo um “não encontrado” para uma página que você já publicou.

Como usar

  1. Busque ou filtre por classe

    Digite um número, um nome ou o problema que você tem: “gateway”, “rate limit”, “unauthorized”. O índice não tem português, então “autenticação” não encontra nada e “authentication” encontra. Ou restrinja a 4xx e leia de cima a baixo.

  2. Abra um para ver o detalhe

    O painel de detalhe dá a especificação que o define, se ele é armazenável em cache por heurística e qualquer cabeçalho que a resposta seja obrigada a carregar: um 405 sem `Allow` e um 301 sem `Location` estão os dois incompletos.

  3. Leia os pares que se confundem

    A seção no fim cobre os que são escolhidos errado: 401 contra 403, 302 contra 307, 502 contra 504.

Perguntas frequentes

Qual é a diferença entre 401 e 403?

401 significa que a requisição não tinha credenciais válidas e precisa incluir um cabeçalho `WWW-Authenticate` dizendo como fornecê-las. 403 significa que as credenciais foram entendidas e não bastam. Mandar 401 para um usuário logado sem permissão é o erro comum.

Por que meu CDN está fazendo cache de um 404?

Porque pode. A RFC 9110 §15.1 lista os códigos de status que um cache pode armazenar por heurística quando nada mais diz o contrário, e o 404 está nela. Uma página que você publicou depois continua não encontrada até o cache expirar ou você limpá-lo: mande `Cache-Control: no-store` em um 404 que você espera que vire 200.

302 ou 307?

307 se você quer o método preservado. Historicamente os clientes transformavam um POST em GET diante de um 302 — a especificação não mandava, mas todo mundo fazia —, então 307 e 308 existem para dizer “mesmo método, nova URL” sem ambiguidade.

Posso inventar meu próprio código de status?

Você pode mandar qualquer coisa, e os clientes vão tratar um código desconhecido como o membro genérico da classe dele: um 499 é tratado como um 400. Mas caches, proxies e bibliotecas decidem pela classe, então um código não registrado não te dá nada que um cabeçalho não pudesse carregar melhor.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.