Códigos de status HTTP: guia de referência
Toda resposta HTTP começa com um código de status de três dígitos que informa ao cliente o que aconteceu. Navegue pelos códigos HTTP por classe, do redirecionamento 301 ao erro HTTP 404, com explicações em linguagem simples, exemplos de resposta e o que cada um significa para redirecionamentos e SEO.
1xx Informativo
A requisição foi recebida e o processamento continua. Essas respostas provisórias chegam antes da resposta final e nunca encerram uma cadeia de redirecionamentos.
- 100
Continue
Resposta provisória: o servidor aceitou os cabeçalhos da requisição, e o cliente, que enviou “Expect: 100-continue”, já pode enviar o corpo da requisição. - 101
Switching Protocols
O servidor aceita a requisição Upgrade do cliente e troca o protocolo desta conexão, na prática quase sempre para WebSocket. - 102
Processing
Resposta provisória obsoleta do WebDAV que avisa ao cliente que o servidor ainda está trabalhando em uma requisição longa e que ele deve continuar esperando. - 103
Early Hints
Resposta provisória que envia cabeçalhos Link antes da resposta final, para o navegador fazer preload de recursos ou preconnect enquanto o servidor trabalha.
2xx Sucesso
A requisição foi recebida, compreendida e aceita. Uma cadeia de redirecionamentos saudável termina em um desses códigos, geralmente o 200 OK.
- 200
OK
A requisição foi bem-sucedida; no GET, o corpo traz o recurso solicitado. Toda cadeia de redirecionamentos deve terminar em uma URL que retorne 200. - 201
Created
A requisição foi bem-sucedida e criou um novo recurso, geralmente após um POST ou PUT. O cabeçalho Location, se presente, aponta para o novo recurso. - 202
Accepted
A requisição foi aceita para processamento, mas ainda não foi concluída. Usado em tarefas assíncronas; o resultado final não é garantido. - 203
Non-Authoritative Information
A requisição foi bem-sucedida, mas um proxy de transformação modificou a resposta; o conteúdo não é exatamente o que o servidor de origem enviou. - 204
No Content
A requisição foi bem-sucedida e não há conteúdo a enviar. O navegador continua na página atual; comum em DELETE, beacons e preflight de CORS. - 205
Reset Content
A requisição foi bem-sucedida e o cliente deve redefinir a visualização do documento, por exemplo limpar o formulário que acabou de ser enviado. - 206
Partial Content
O servidor envia apenas os intervalos de bytes que o cliente pediu com um cabeçalho Range, como no streaming de vídeo e em downloads retomáveis. - 207
Multi-Status
Resposta WebDAV que traz um código de status separado para cada um de vários recursos ou propriedades, em um corpo XML multistatus. - 208
Already Reported
Usado dentro de uma resposta WebDAV 207: os membros desta coleção já foram listados antes, o que evita repetições infinitas quando os bindings formam um loop. - 226
IM Used
O servidor respondeu a um GET com delta encoding (RFC 3229): o corpo contém apenas as mudanças em relação a uma versão que o cliente já tem.
3xx Redirecionamento
O cliente precisa realizar uma ação adicional, geralmente fazer uma requisição à URL indicada no cabeçalho Location. São esses os códigos que formam uma cadeia de redirecionamentos.
- 300
Multiple Choices
O recurso tem várias representações, e o cliente pode escolher uma. Os navegadores não seguem um 300 automaticamente, mesmo com um cabeçalho Location. - 301
Moved Permanently
O recurso tem uma nova URL permanente, informada no cabeçalho Location. Clientes e mecanismos de busca devem usar a nova URL daqui em diante. - 302
Found
O recurso está temporariamente em outra URL. Os clientes seguem o cabeçalho Location, mas devem continuar usando a URL original no futuro. - 303
See Other
Redireciona o cliente para outra URL, que deve ser acessada com GET, em geral para exibir o resultado após o envio de um formulário (Post/Redirect/Get). - 304
Not Modified
Resposta a um GET ou HEAD condicional: a cópia em cache do cliente ainda é válida, então o servidor não envia corpo e essa cópia é reutilizada. - 305
Use Proxy
Obsoleto. Pedia ao cliente que repetisse a requisição pelo proxy informado em Location; os navegadores o ignoram por motivos de segurança. - 306
Não utilizado (antigo Switch Proxy)
Reservado e sem uso. O 306 foi proposto como “Switch Proxy”, mas abandonado; não deve ser usado, e os clientes o tratam como um código 3xx desconhecido. - 307
Temporary Redirect
Redirecionamento temporário que exige repetir a requisição com o mesmo método e corpo na URL do Location, ao contrário do 302, que pode transformar POST em GET. - 308
Permanent Redirect
Redirecionamento permanente que mantém o método e o corpo da requisição. Como no 301, a nova URL deve ser usada daqui em diante, mas o POST nunca vira GET.
4xx Erro do cliente
A requisição não pode ser atendida da forma como foi enviada: a página não existe, o acesso foi negado ou o cliente enviou requisições demais.
- 400
Bad Request
O servidor não vai processar a requisição por causa de um erro do cliente, como sintaxe malformada, uma URL inválida ou cookies grandes demais. - 401
Unauthorized
A requisição precisa de autenticação válida. O servidor deve enviar um cabeçalho WWW-Authenticate dizendo como se autenticar, por exemplo Basic ou Bearer. - 402
Payment Required
Reservado pelo HTTP para uso futuro. Na prática, algumas APIs e serviços o usam quando é preciso um pagamento, créditos ou uma assinatura. - 403
Forbidden
O servidor entendeu a requisição, mas se recusa a autorizá-la. Ao contrário do 401, simplesmente enviar as mesmas credenciais de novo não resolve. - 404
Not Found
O servidor não tem nada nesta URL ou não quer dizer se algo existe. O código não indica se a ausência é temporária ou permanente. - 405
Method Not Allowed
A URL existe, mas não aceita o método HTTP usado, por exemplo POST em uma página estática. O cabeçalho Allow lista os métodos aceitos. - 406
Not Acceptable
O servidor não consegue gerar uma resposta compatível com os cabeçalhos Accept do cliente (formato, idioma, codificação) e não vai enviar uma versão padrão. - 407
Proxy Authentication Required
Como o 401, mas quem exige autenticação é um proxy entre o cliente e o servidor. O cabeçalho Proxy-Authenticate informa como se autenticar. - 408
Request Timeout
O servidor não recebeu uma requisição completa a tempo e fecha a conexão. O cliente pode enviar a requisição de novo em uma nova conexão. - 409
Conflict
A requisição entra em conflito com o estado atual do recurso, por exemplo um conflito de edição, um registro duplicado ou versões incompatíveis. - 410
Gone
O recurso foi removido de propósito e não deve voltar. Um sinal mais explícito e permanente do que o 404 Not Found. - 411
Length Required
O servidor recusa uma requisição com corpo, mas sem cabeçalho Content-Length. O cliente pode reenviá-la com um Content-Length válido. - 412
Precondition Failed
Uma condição nos cabeçalhos da requisição, como If-Match ou If-Unmodified-Since, era falsa; por isso, o servidor não aplicou a alteração. - 413
Content Too Large
O corpo da requisição é maior do que o servidor aceita, como em uploads grandes demais. Antes se chamava “Payload Too Large” e “Request Entity Too Large”. - 414
URI Too Long
A URL solicitada é mais longa do que o servidor aceita processar, por exemplo porque um loop de redirecionamento continua acrescentando parâmetros a ela. - 415
Unsupported Media Type
O servidor recusa o corpo da requisição porque o formato (Content-Type) ou a codificação do conteúdo (Content-Encoding) não é suportado. - 416
Range Not Satisfiable
O intervalo de bytes do cabeçalho Range da requisição fica fora do arquivo, como quando um download é retomado além do fim de um arquivo que mudou. - 417
Expectation Failed
O servidor não consegue atender à expectativa do cabeçalho Expect da requisição. Na prática, isso significa que o Expect: 100-continue não é suportado. - 418
I'm a Teapot
Uma piada de 1º de abril do protocolo da cafeteira de 1998 (RFC 2324). Reservado como não utilizado no HTTP, mas alguns sites o retornam de propósito. - 421
Misdirected Request
A requisição chegou a um servidor que não pode responder por este nome de host, muitas vezes por divergência no SNI do TLS ou por reuso de uma conexão HTTP/2. - 422
Unprocessable Content
A requisição está bem formada, mas o conteúdo é semanticamente inválido, em geral um erro de validação em uma API. Antes se chamava “Unprocessable Entity”. - 423
Locked
WebDAV: o recurso está bloqueado, e o método não pode ser aplicado agora. O cliente precisa do token de bloqueio ou tem de esperar o bloqueio terminar. - 424
Failed Dependency
WebDAV: o método não pôde ser executado porque outra ação da qual ele dependia falhou, por exemplo uma única propriedade em um PROPPATCH. - 425
Too Early
O servidor não vai processar uma requisição enviada como early data do TLS (0-RTT), pois ela pode sofrer replay. O cliente tenta de novo após o handshake. - 426
Upgrade Required
O servidor se recusa a tratar a requisição pelo protocolo atual e exige um upgrade para o protocolo indicado no cabeçalho Upgrade. - 428
Precondition Required
O servidor exige que a requisição seja condicional (If-Match) para evitar atualizações perdidas quando vários clientes editam o mesmo recurso. - 429
Too Many Requests
O cliente enviou requisições demais em um certo período (rate limiting). Um cabeçalho Retry-After pode indicar quanto tempo esperar para tentar de novo. - 431
Request Header Fields Too Large
O servidor recusa a requisição porque os cabeçalhos são grandes demais, geralmente porque o navegador envia cookies demais ou grandes demais. - 444
No Response
nginx Código não padrão do nginx: o servidor fecha a conexão sem enviar nenhuma resposta. Os clientes recebem uma resposta vazia, e nunca um 444. - 451
Unavailable For Legal Reasons
Acesso negado por uma exigência legal, como uma ordem judicial ou um bloqueio do governo. O nome vem do livro Fahrenheit 451, de Ray Bradbury. - 499
Client Closed Request
nginx Código não padrão que o nginx registra no log de acesso quando o cliente fecha a conexão antes de o servidor enviar a resposta.
5xx Erro do servidor
O servidor não conseguiu atender a uma requisição aparentemente válida. Erros 5xx persistentes bloqueiam tanto os visitantes quanto os rastreadores.
- 500
Internal Server Error
Falha genérica do lado do servidor: algo deu errado no servidor, como uma falha da aplicação ou um arquivo de configuração com erro. - 501
Not Implemented
O servidor não dá suporte à funcionalidade necessária para atender à requisição, normalmente um método HTTP que ele não reconhece. - 502
Bad Gateway
Um gateway ou proxy recebeu uma resposta inválida do servidor upstream, por exemplo porque a aplicação por trás do nginx travou. - 503
Service Unavailable
O servidor está temporariamente sem condições de atender à requisição por sobrecarga ou manutenção. O Retry-After pode dizer quando tentar de novo. - 504
Gateway Timeout
Um gateway ou proxy não recebeu a tempo uma resposta do servidor upstream, normalmente porque a aplicação está lenta demais. - 505
HTTP Version Not Supported
O servidor não suporta, ou se recusa a suportar, a versão principal do HTTP usada na requisição. Hoje, costuma indicar uma linha de requisição malformada. - 506
Variant Also Negotiates
Erro de configuração do servidor na negociação transparente de conteúdo (RFC 2295): a variante escolhida também é negociável, o que cria um loop. - 507
Insufficient Storage
WebDAV: o servidor não consegue armazenar os dados necessários para concluir a requisição, por exemplo porque o disco está cheio ou a cota do usuário acabou. - 508
Loop Detected
WebDAV: o servidor interrompeu uma operação Depth: infinity porque encontrou um loop infinito de bindings. Não tem relação com loops de redirecionamento. - 510
Not Extended
Do obsoleto HTTP Extension Framework (RFC 2774): falta na requisição uma declaração de extensão obrigatória. Histórico e, na prática, sem uso. - 511
Network Authentication Required
A rede, geralmente um portal cativo de Wi-Fi, exige login antes de liberar o acesso. Enviado por redes que interceptam o tráfego, não por servidores de origem. - 520
Web Server Returned an Unknown Error
Cloudflare Específico da Cloudflare: o servidor de origem retornou uma resposta vazia, desconhecida ou inesperada, por exemplo após uma falha ou uma conexão redefinida. - 521
Web Server Is Down
Cloudflare Específico da Cloudflare: o servidor de origem recusou a conexão da Cloudflare, geralmente porque o servidor web está fora do ar ou bloqueia a Cloudflare. - 522
Connection Timed Out
Cloudflare Específico da Cloudflare: a Cloudflare não conseguiu concluir a tempo uma conexão TCP com a origem, ou a origem não confirmou o recebimento da requisição. - 523
Origin Is Unreachable
Cloudflare Específico da Cloudflare: a Cloudflare não consegue alcançar a origem de forma alguma, em geral por um problema de roteamento ou IP de origem errado no DNS. - 524
A Timeout Occurred
Cloudflare Específico da Cloudflare: a Cloudflare se conectou à origem, mas não recebeu resposta HTTP antes do tempo limite de leitura, cerca de dois minutos por padrão. - 525
SSL Handshake Failed
Cloudflare Específico da Cloudflare: o handshake TLS entre a Cloudflare e a origem falhou, por exemplo porque a origem não tem um certificado válido. - 526
Invalid SSL Certificate
Cloudflare Específico da Cloudflare: no modo Full (strict), a Cloudflare não conseguiu validar o certificado da origem (ex.: expirado, autoassinado ou de outro nome). - 530
Erro 1xxx da Cloudflare
Cloudflare Específico da Cloudflare: enviado junto com um erro 1xxx da Cloudflare, por exemplo 1016 (erro de DNS da origem) ou 1033 (erro do Cloudflare Tunnel).
Como ler um código de status HTTP
O primeiro dígito indica a classe da resposta, e os outros dois identificam o significado exato dentro dessa classe. Um cliente que não reconhece um código específico o trata como o código x00 da mesma classe; assim, um código 4xx desconhecido é tratado como 400 Bad Request.
A frase de motivo (reason phrase) que vem depois do número, como Not Found ou Moved Permanently, é apenas uma descrição para humanos. Os clientes agem somente com base no número, e o HTTP/2 e o HTTP/3 nem chegam a enviar essa frase.
Códigos de status de redirecionamento em resumo
- 301 Moved Permanently: permanente; os navegadores podem transformar um POST em GET. A escolha padrão para páginas que mudaram de endereço.
- 302 Found: temporário; o método pode mudar. É o padrão em muitos frameworks.
- 303 See Other: temporário; o novo endereço é sempre acessado com GET. Usado após o envio de formulários.
- 307 Temporary Redirect: temporário; o método e o corpo da requisição são preservados.
- 308 Permanent Redirect: permanente; o método e o corpo da requisição são preservados.
- 304 Not Modified: não é um redirecionamento para outra URL, e sim um sinal de que a cópia em cache do cliente ainda é válida.
Leia o nosso guia sobre códigos de status HTTP de redirecionamento para saber quando usar cada um.
Códigos de status em uma cadeia de redirecionamentos
Uma cadeia de redirecionamentos é uma série de respostas 3xx que termina em uma resposta final. Somente o último código de status é o que o visitante ou o rastreador realmente recebe; por isso, uma cadeia que termina em 404 é um link quebrado, por mais corretos que pareçam os redirecionamentos anteriores. Use o verificador de redirecionamento de URL para ver o código de status de cada salto (cada etapa da cadeia), ou o Verificador de redirecionamento em massa para verificar várias URLs de uma vez.
Verificador de redirecionamento de URL
Veja todos os códigos de status que uma URL retorna, salto a salto, com o verificador de redirecionamento gratuito do TrueURL.