Também disponível em: English · Español · Français · العربية
Códigos de estado HTTP
A lista completa do registo da IANA, com os quatro estados que quase todas as tabelas confundem num só.
O que é um código de estado HTTP
Toda a resposta HTTP começa por um número de três algarismos que diz como correu. O primeiro algarismo é a classe: 1xx significa que o servidor ainda está a trabalhar, 2xx que correu bem, 3xx que tem de ir a outro sítio, 4xx que o pedido estava errado e 5xx que o errado era o servidor. O número é o que o software interpreta; a frase ao lado é para pessoas.
A lista com autoridade é o registo de códigos de estado HTTP da IANA, e esta página é gerada a partir dele em vez de escrita de memória. Isso importa mais do que parece, porque o registo regista quatro estados diferentes e quase todas as tabelas publicadas achatam-nos numa única lista de códigos que poderia usar.
Como usar esta lista
- Pesquise por número ou por frase. Os números procuram-se pelo início, portanto escrever 40 dá-lhe toda a família 40x e 404 reduz a um. O texto procura-se em qualquer parte da frase: experimente gateway, ou legal.
- Veja as etiquetas antes de usar um código. Reservado significa que o registo o pôs de parte para que ninguém o usasse. Obsoleto significa que foi registado e depois retirado. Temporário significa que esse registo tem data de validade.
- Desça para lá do registo para o resto. Os códigos que já viu por aí e não encontra acima estão na secção de fornecedores, cada um atribuído ao programa que o devolve, e a seguir os intervalos que a IANA não atribuiu a ninguém.
O 418 não é um código de brincadeira que possa usar
O dado mais repetido sobre códigos HTTP é que o 418 I'm a Teapot é uma partida de 1998 e que o pode devolver por graça. A primeira metade é verdade. A segunda está ao contrário, e o registo di-lo sem rodeios: o 418 está listado, a sua descrição é (Unused) e a sua referência é a secção 15.5.19 do RFC 9110. Aparece no registo precisamente para nunca poder ser atribuído a nada real.
Esse é um estado diferente de «por atribuir», e essa distinção é a razão de ser desta página. O 306 está na mesma situação: reservado, inutilizável para sempre. O 510 Not Extended está num terceiro estado: foi mesmo registado e depois a sua experiência foi reclassificada como Histórica, pelo que consta como obsoleto. E o 104 Upload Resumption Supported está num quarto: um registo temporário que expira a 13 de Novembro de 2026 e pode simplesmente desaparecer.
Tire tudo isso e ficam 61 códigos que um servidor deve mesmo devolver, em 64 linhas do registo. Uma tabela que apresenta os 64 como iguais está a dizer-lhe para usar dois códigos que existem para ser inutilizáveis.
Os códigos que nem sequer estão no registo
As tabelas publicadas têm um segundo problema: os códigos que acrescentam. O 420, o 444, o 499 e a família 52x aparecem em quase todas as listas como se estivessem ao lado do 404. A IANA não atribuiu nenhum. No caso do 420 o registo é explícito em sentido contrário: 419-420 é um dos onze intervalos marcados como por atribuir.
Não são inventados, isso sim: são comportamentos reais de programas concretos, e por isso vão aqui na sua própria secção com o programa identificado. O 499 é o nginx a anotar que o cliente desligou antes de a resposta estar pronta. O 444 é o nginx a fechar a ligação sem sequer responder. A família 52x é da Cloudflare, e a sua própria documentação de apoio lista do 520 ao 526 e o 530 ao lado dos códigos 5xx padrão sem em momento algum mencionar que não estão registados, o que explica boa parte da sua difusão.
A consequência prática é simples. Qualquer código de um intervalo por atribuir está livre para uso interno, e continuará a ser uma extensão privada e não uma norma: nenhuma biblioteca cliente saberá o que quer dizer com ele.
Limites honestos
Isto é um instantâneo. O registo muda: o 451 foi acrescentado em 2016, o 103 em 2017, e o 104 chegou em 2024 como registo temporário já com data de validade. A data em que a lista foi gerada está impressa no fim, e o script que a gerou está no repositório, portanto a página pode dizer quando foi verdadeira em vez de insinuar que o será sempre.
As frases de estado são as do próprio registo, em inglês, e deliberadamente não são traduzidas nas outras versões desta página. A frase viaja no fio como parte do protocolo — um servidor envia Not Found, não «Não encontrado» —, portanto traduzi-la descreveria algo que nenhum servidor devolve. O que se traduz é a explicação em redor; o protocolo não.
A tabela de fornecedores é a única parte que não sai de um registo, porque não há registo nenhum de onde a tirar. Cada linha vem da documentação do próprio fornecedor. Não é exaustiva nem pode ser, já que qualquer um pode devolver o número que lhe apetecer.
Porque é grátis?
Porque é uma lista. A página inteira é texto estático com uma caixa de pesquisa que a filtra no seu navegador: nada é enviado, nada é guardado e não há servidor pelo meio para a ler.
Portanto não há conta, nem registo, nem nada atrás de um muro. O registo de base é um documento público mantido pela IANA, e uma lista de factos públicos não devia ter uma cobrança à frente.