Códigos de status HTTP
Todos os códigos de status HTTP explicados de forma simples: o que significam, causas comuns, como resolver, uma resposta de exemplo e o RFC que os define.
70 códigos de status
1xx Informativos
Respostas provisórias: a requisição foi recebida e o processamento continua.
100 Continue Continuar O servidor recebeu os cabeçalhos da requisição e o cliente pode continuar enviando o corpo. É uma resposta provisória enviada antes do status final. 101 Switching Protocols Mudando de protocolo O servidor concorda em mudar para o protocolo que o cliente pediu no cabeçalho Upgrade, quase sempre WebSocket. Depois desta resposta a conexão passa a usar o novo protocolo. 102 Processing Processando Resposta provisória do WebDAV que avisa ao cliente que o servidor ainda está trabalhando numa requisição longa, para que não haja timeout. Está obsoleta e quase não é enviada hoje. 103 Early Hints Early Hints Resposta provisória que envia cabeçalhos Link antecipadamente para que o navegador pré-carregue CSS e fontes ou se pré-conecte a outras origens enquanto o servidor ainda monta a página final.
2xx Sucesso
A requisição foi recebida, entendida e aceita.
200 OK OK A requisição foi bem-sucedida. Em um GET o corpo contém o recurso; em um POST contém o resultado da ação. 201 Created Criado A requisição foi bem-sucedida e criou um novo recurso. O cabeçalho Location normalmente aponta para ele. 202 Accepted Aceito A requisição foi aceita para processamento, mas o processamento não terminou. O resultado é desconhecido no momento da resposta. 203 Non-Authoritative Information Informação não autoritativa A requisição foi bem-sucedida, mas um proxy de transformação modificou o conteúdo da resposta 200 da origem. 204 No Content Sem conteúdo A requisição foi bem-sucedida e não há corpo a retornar. Os cabeçalhos ainda podem trazer metadados como um novo ETag. 205 Reset Content Redefinir conteúdo A requisição foi bem-sucedida e o cliente deve redefinir a visualização do documento, por exemplo limpar o formulário enviado. Nenhum corpo é enviado. 206 Partial Content Conteúdo parcial O servidor está devolvendo só parte do recurso, conforme pedido por um cabeçalho Range. Content-Range indica quais bytes estão incluídos. 207 Multi-Status Multi-status Resposta WebDAV cujo corpo XML contém um status separado para cada um dos recursos afetados por uma requisição. 208 Already Reported Já reportado Usado dentro de um corpo WebDAV 207 para dizer que um recurso já foi listado antes na resposta, evitando duplicatas quando vínculos criam ciclos. 226 IM Used IM usado O servidor atendeu um GET aplicando uma ou mais manipulações de instância (codificação delta), então o corpo é uma diferença e não o recurso completo.
3xx Redirecionamento
O cliente precisa dar mais um passo, geralmente seguir uma nova URL.
300 Multiple Choices Múltiplas escolhas O recurso tem várias representações (idioma, formato) e o cliente ou usuário deve escolher uma. O servidor pode sugerir a preferida via Location. 301 Moved Permanently Movido permanentemente O recurso foi movido permanentemente para a URL em Location. Clientes e buscadores devem usar a nova URL daqui em diante. 302 Found Encontrado O recurso está temporariamente em outra URL. Os clientes devem continuar usando a URL original nas próximas requisições. 303 See Other Ver outro O servidor orienta o cliente a buscar outra URL com GET, geralmente para mostrar o resultado de um POST. 304 Not Modified Não modificado A cópia em cache que o cliente já tem continua válida, então o servidor não envia corpo. Responde a uma requisição condicional com If-None-Match ou If-Modified-Since. 305 Use Proxy Usar proxy Obsoleto. Antes dizia ao cliente para repetir a requisição pelo proxy em Location. Navegadores o ignoram por segurança. 307 Temporary Redirect Redirecionamento temporário O recurso está temporariamente em outra URL, e o cliente deve repetir a requisição lá com o mesmo método e corpo. 308 Permanent Redirect Redirecionamento permanente O recurso foi movido permanentemente, e os clientes devem repetir a requisição na nova URL com o mesmo método e corpo.
4xx Erros do cliente
A requisição tem um problema que o cliente deve corrigir.
400 Bad Request Requisição inválida O servidor não consegue processar a requisição porque ela está malformada: sintaxe inválida, enquadramento incorreto ou valores que ele não consegue interpretar. 401 Unauthorized Não autorizado A requisição não tem credenciais de autenticação válidas. Apesar do nome, significa não autenticado: faça login ou envie um token válido. 402 Payment Required Pagamento necessário Reservado para uso futuro, mas na prática serviços o retornam quando é preciso um pagamento ou plano pago para continuar. 403 Forbidden Proibido O servidor entendeu a requisição, mas se recusa a autorizá-la. Fazer login de novo não ajuda, a menos que as permissões mudem. 404 Not Found Não encontrado O servidor não encontra nada na URL solicitada. Não diz se o recurso já existiu ou se vai voltar. 405 Method Not Allowed Método não permitido A URL existe, mas não suporta o método HTTP usado. O cabeçalho Allow lista os métodos que funcionam. 406 Not Acceptable Não aceitável O servidor não consegue produzir uma resposta em nenhum formato permitido pelos cabeçalhos Accept do cliente. 407 Proxy Authentication Required Autenticação de proxy necessária Um proxy entre o cliente e o servidor exige autenticação antes de repassar a requisição. 408 Request Timeout Tempo de requisição esgotado O servidor fechou a conexão porque o cliente não enviou uma requisição completa a tempo. 409 Conflict Conflito A requisição conflita com o estado atual do recurso, como uma duplicata ou uma edição simultânea. 410 Gone Removido O recurso sumiu permanentemente e não há endereço novo conhecido. Diferente do 404, o servidor afirma isso de propósito. 411 Length Required Tamanho necessário O servidor exige um cabeçalho Content-Length e a requisição não o incluiu. 412 Precondition Failed Pré-condição falhou Uma pré-condição nos cabeçalhos, como If-Match ou If-Unmodified-Since, resultou falsa, então o servidor não aplicou a requisição. 413 Content Too Large Conteúdo muito grande O corpo da requisição é maior do que o servidor quer ou consegue processar. Antes se chamava Payload Too Large. 414 URI Too Long URI muito longa A URL da requisição é mais longa do que o servidor aceita interpretar. 415 Unsupported Media Type Tipo de mídia não suportado O servidor recusa a requisição porque o tipo de mídia do corpo (Content-Type) ou a codificação não é suportado. 416 Range Not Satisfiable Intervalo não satisfatório O cabeçalho Range pede bytes fora do tamanho do recurso. 417 Expectation Failed Expectativa falhou O servidor não consegue atender ao requisito do cabeçalho Expect da requisição, geralmente Expect: 100-continue. 418 I'm a teapot Sou um bule de chá Uma piada de 1º de abril do Hyper Text Coffee Pot Control Protocol: o servidor é um bule de chá e se recusa a passar café. Alguns sites o usam como piada ou para bloquear bots. 421 Misdirected Request Requisição mal direcionada A requisição chegou a um servidor que não está configurado para responder por aquele host, muitas vezes porque uma conexão HTTP/2 foi reutilizada para outro domínio. 422 Unprocessable Content Conteúdo não processável A requisição está bem formada, mas contém erros semânticos, então o servidor não consegue processá-la. Antes Unprocessable Entity. 423 Locked Bloqueado WebDAV: o recurso está bloqueado, então o método não pode ser aplicado. 424 Failed Dependency Dependência falhou WebDAV: a ação falhou porque dependia de outra ação da mesma requisição que falhou. 425 Too Early Cedo demais O servidor se recusa a processar uma requisição enviada como dados antecipados do TLS 1.3 (0-RTT) porque ela poderia ser repetida. 426 Upgrade Required Upgrade necessário O servidor recusa a requisição no protocolo atual e exige que o cliente faça upgrade, por exemplo para TLS ou HTTP/2, como indicado no cabeçalho Upgrade. 428 Precondition Required Pré-condição necessária O servidor exige que a requisição seja condicional (If-Match etc.) para evitar atualizações perdidas. 429 Too Many Requests Requisições demais O cliente enviou requisições demais em um dado período (limitação de taxa). Retry-After pode dizer quanto esperar. 431 Request Header Fields Too Large Campos de cabeçalho muito grandes Os cabeçalhos da requisição são grandes demais, seja um único cabeçalho ou todos juntos. 451 Unavailable For Legal Reasons Indisponível por motivos legais O servidor não pode fornecer o recurso por motivos legais, como ordem judicial ou censura governamental. O número homenageia Fahrenheit 451. 499 Client Closed Request (Não padrão) Cliente fechou a requisição O nginx registra 499 quando o cliente fecha a conexão antes de o servidor enviar uma resposta. O cliente nunca vê esse código.
5xx Erros do servidor
O servidor não conseguiu atender a uma requisição válida.
500 Internal Server Error Erro interno do servidor O servidor encontrou uma condição inesperada e não conseguiu concluir a requisição. É um código genérico para erros do lado do servidor. 501 Not Implemented Não implementado O servidor não suporta a funcionalidade necessária, normalmente o próprio método da requisição. 502 Bad Gateway Gateway inválido Um gateway ou proxy recebeu uma resposta inválida do servidor upstream para o qual repassou a requisição. 503 Service Unavailable Serviço indisponível O servidor está temporariamente incapaz de atender a requisição, por sobrecarga ou manutenção. Retry-After pode dizer quando tentar de novo. 504 Gateway Timeout Tempo do gateway esgotado Um gateway ou proxy não recebeu a tempo a resposta do servidor upstream. 505 HTTP Version Not Supported Versão HTTP não suportada O servidor não suporta a versão do HTTP usada na requisição. 506 Variant Also Negotiates Variante também negocia A negociação transparente de conteúdo está mal configurada: a variante escolhida também está configurada para negociar, criando um loop. 507 Insufficient Storage Armazenamento insuficiente O servidor não consegue armazenar a representação necessária para concluir a requisição (sem espaço em disco ou cota). Vem do WebDAV. 508 Loop Detected Loop detectado O servidor detectou um loop infinito ao processar uma requisição com Depth: infinity (WebDAV). Alguns provedores também o usam para limites de recursos. 510 Not Extended Não estendido O servidor precisa de mais extensões para atender a requisição (HTTP Extension Framework). Esse framework hoje é histórico. 511 Network Authentication Required Autenticação de rede necessária O cliente precisa se autenticar para ter acesso à rede, normalmente num portal cativo (Wi-Fi de hotel ou aeroporto). 520 Web Server Returned an Unknown Error (Não padrão) Erro desconhecido Específico da Cloudflare: o servidor de origem retornou uma resposta vazia, desconhecida ou inesperada. 521 Web Server Is Down (Não padrão) Servidor web fora do ar Específico da Cloudflare: o servidor de origem recusou a conexão. 522 Connection Timed Out (Não padrão) Tempo de conexão esgotado Específico da Cloudflare: a conexão TCP com a origem esgotou o tempo. 523 Origin Is Unreachable (Não padrão) Origem inacessível Específico da Cloudflare: a Cloudflare não consegue alcançar a origem, normalmente por problemas de DNS ou roteamento. 524 A Timeout Occurred (Não padrão) Ocorreu um timeout Específico da Cloudflare: a conexão com a origem foi feita, mas a origem não enviou uma resposta HTTP a tempo (100 segundos por padrão). 525 SSL Handshake Failed (Não padrão) Falha no handshake SSL Específico da Cloudflare: o handshake TLS entre a Cloudflare e a origem falhou. 526 Invalid SSL Certificate (Não padrão) Certificado SSL inválido Específico da Cloudflare: no modo SSL Full (strict), o certificado da origem é inválido, expirado, autoassinado ou não corresponde ao nome do host.