Referência de códigos de estado HTTP
Os códigos de estado HTTP de 100 a 511, com o que cada um significa para um programador e o RFC que o define, e ainda os códigos não padrão usados pelo nginx, pela Cloudflare e por outros produtos.
78 códigos de estado.
1xx Informação
O servidor recebeu o pedido e ainda o está a processar. São respostas intermédias, enviadas antes da resposta final.
- 100 Continue
- O servidor recebeu os cabeçalhos do pedido e o cliente pode enviar o corpo. O cliente pede-o enviando Expect: 100-continue antes de um upload grande. RFC 9110
- 101 Switching Protocols
- O servidor aceita mudar o protocolo desta ligação, como pedia o cabeçalho Upgrade. É assim que começa uma ligação WebSocket. RFC 9110
- 102 Processing
- O servidor aceitou um pedido WebDAV e ainda o está a processar, por isso o cliente não deve desistir por timeout. A especificação atual do WebDAV já não o inclui e raramente é enviado. RFC 2518
- 103 Early Hints
- Enviado antes da resposta final com cabeçalhos Link, para que o navegador possa começar a pré-carregar recursos ou a abrir ligações enquanto o servidor prepara a página. RFC 8297
2xx Sucesso
O pedido foi recebido, compreendido e aceite.
- 200 OK
- O pedido teve êxito. O corpo contém o resultado: o recurso, num GET, ou o resultado da ação, num POST. RFC 9110
- 201 Created
- O pedido criou um novo recurso. Normalmente, o cabeçalho Location indica o seu URL. RFC 9110
- 202 Accepted
- O pedido foi aceite para um processamento que ainda não terminou e que ainda pode falhar. É típico de trabalho colocado numa fila. RFC 9110
- 203 Non-Authoritative Information
- O pedido teve êxito, mas um proxy alterou a resposta enviada pelo servidor de origem. RFC 9110
- 204 No Content
- O pedido teve êxito e não há corpo para enviar. É comum em DELETE, e em PUT ou PATCH quando o cliente já tem o novo estado. RFC 9110
- 205 Reset Content
- O pedido teve êxito e o cliente deve repor a vista que o enviou, por exemplo limpando um formulário. Não há corpo. RFC 9110
- 206 Partial Content
- O corpo contém apenas o intervalo de bytes pedido no cabeçalho Range. Usa-se para retomar transferências e para saltar para outro ponto de um vídeo. RFC 9110
- 207 Multi-Status
- O corpo é um documento XML com um estado separado para cada um de vários recursos. É usado pelo WebDAV. RFC 4918
- 208 Already Reported
- Dentro de uma resposta Multi-Status do WebDAV, marca os membros de um binding que já foram listados, para que não se repitam. RFC 5842
- 226 IM Used
- O corpo é o resultado de aplicar ao recurso atual uma ou mais manipulações de instância, como um delta. Faz parte da codificação delta em HTTP, que raramente é implementada. RFC 3229
3xx Redirecionamento
O cliente tem de dar mais um passo para concluir o pedido, normalmente um pedido a outro URL.
- 300 Multiple Choices
- O recurso tem várias representações e o cliente pode escolher uma. Raramente é usado, porque não existe uma forma padrão de fazer a escolha. RFC 9110
- 301 Moved Permanently
- Um redirecionamento permanente: o recurso tem um novo URL, indicado no cabeçalho Location, e os motores de pesquisa costumam indexar esse URL no lugar do antigo. Os clientes podem mudar POST para GET ao segui-lo; use 308 para manter o método. RFC 9110
- 302 Found
- Um redirecionamento temporário: por agora, o recurso está noutro URL, indicado no cabeçalho Location. Os clientes podem mudar POST para GET ao segui-lo; use 307 para manter o método. RFC 9110
- 303 See Other
- A resposta está noutro URL, que o cliente deve obter com GET. É o redirecionamento habitual depois do POST de um formulário, para que recarregar a página não volte a submeter o formulário. RFC 9110
- 304 Not Modified
- A cópia na cache do cliente continua atual, por isso não é enviado corpo. Responde a um pedido condicional feito com If-None-Match ou If-Modified-Since. RFC 9110
- 305 Use Proxy
- O recurso tem de ser acedido através do proxy indicado no cabeçalho Location. Está obsoleto por razões de segurança, e os clientes não devem depender dele. RFC 9110
- 306 (Unused)
- Uma versão anterior da especificação usava este código. Já não é usado, e o número continua reservado. RFC 9110
- 307 Temporary Redirect
- O recurso está temporariamente noutro URL, e o cliente tem de seguir o redirecionamento e repetir o pedido nesse URL com o mesmo método e o mesmo corpo. RFC 9110
- 308 Permanent Redirect
- O recurso tem um novo URL permanente, e o cliente tem de seguir o redirecionamento e repetir o pedido nesse URL com o mesmo método e o mesmo corpo. RFC 9110
4xx Erro do cliente
O pedido tem um problema do lado do cliente: está mal formado, não tem permissão ou pede algo que não pode ser servido.
- 400 Bad Request
- O servidor não consegue processar o pedido porque está mal formado: a sintaxe está errada, o enquadramento da mensagem é inválido ou não é possível interpretar o corpo. RFC 9110
- 401 Unauthorized
- O pedido não tem credenciais válidas. O cabeçalho WWW-Authenticate da resposta indica como autenticar. Apesar do nome, o código diz respeito à autenticação, não à permissão. RFC 9110
- 402 Payment Required
- Reservado para uso futuro. Algumas APIs enviam-no quando uma subscrição terminou ou uma quota paga se esgotou. RFC 9110
- 403 Forbidden
- O servidor compreendeu o pedido e recusa-o. Se o pedido levava credenciais, estas não dão acesso a este recurso, e enviá-las de novo não adianta. RFC 9110
- 404 Not Found
- O servidor não tem nada neste URL, ou não quer revelar que tem. O código não diz se a ausência é permanente. RFC 9110
- 405 Method Not Allowed
- O recurso existe mas não suporta este método. O cabeçalho Allow lista os métodos que suporta. RFC 9110
- 406 Not Acceptable
- O servidor não consegue produzir uma resposta que satisfaça os cabeçalhos Accept, Accept-Language ou Accept-Encoding do pedido. RFC 9110
- 407 Proxy Authentication Required
- Como o 401, mas o cliente tem de se autenticar no proxy, conforme descreve o cabeçalho Proxy-Authenticate. RFC 9110
- 408 Request Timeout
- O servidor não recebeu o pedido completo dentro do tempo que estava disposto a esperar, e fecha a ligação. RFC 9110
- 409 Conflict
- O pedido entra em conflito com o estado atual do recurso, por exemplo uma edição feita sobre uma versão desatualizada ou um valor duplicado onde só pode haver um. RFC 9110
- 410 Gone
- O recurso existiu aqui e foi removido definitivamente. Ao contrário do 404, indica aos clientes e aos motores de pesquisa que podem esquecer o URL. RFC 9110
- 411 Length Required
- O servidor recusa o pedido porque não tem cabeçalho Content-Length. RFC 9110
- 412 Precondition Failed
- Uma condição em If-Match, If-Unmodified-Since ou num cabeçalho semelhante era falsa, por isso o pedido não foi aplicado. Evita que se sobrescreva uma alteração feita por outra pessoa. RFC 9110
- 413 Content Too Large
- O corpo do pedido é maior do que o servidor aceita, normalmente por causa de um limite de upload no servidor ou num proxy à frente dele. O nome anterior era Payload Too Large. RFC 9110
- 414 URI Too Long
- O URL é mais comprido do que o servidor aceita. Muitas vezes significa que foram postos na query string dados que deviam ir no corpo de um POST. RFC 9110
- 415 Unsupported Media Type
- O servidor não aceita o formato do corpo do pedido, declarado no cabeçalho Content-Type ou Content-Encoding. RFC 9110
- 416 Range Not Satisfiable
- O cabeçalho Range pede bytes que ficam fora do recurso. RFC 9110
- 417 Expectation Failed
- O servidor não consegue cumprir o requisito indicado no cabeçalho Expect do pedido. RFC 9110
- 418 I'm a teapot
- Uma brincadeira do Dia das Mentiras, tirada do Hyper Text Coffee Pot Control Protocol, em que um bule se recusa a fazer café. O RFC 9110 indica o número como não usado e mantém-no reservado, porque foi implementado como piada vezes demais para lhe poder ser dado outro significado. RFC 2324, RFC 9110
- 421 Misdirected Request
- O pedido chegou a um servidor que não está configurado para responder por este nome de host. Pode acontecer quando um navegador reutiliza uma ligação HTTP/2 para outro host; o cliente pode tentar novamente numa nova ligação. RFC 9110
- 422 Unprocessable Content
- A sintaxe do pedido está correta mas o conteúdo não é válido, por exemplo um corpo JSON que falha a validação. Vem do WebDAV, onde se chamava Unprocessable Entity. RFC 9110, RFC 4918
- 423 Locked
- O recurso WebDAV está bloqueado, por isso o método não lhe pode ser aplicado. RFC 4918
- 424 Failed Dependency
- O método não foi executado neste recurso WebDAV porque falhou outra ação de que dependia. RFC 4918
- 425 Too Early
- O servidor não processa um pedido que chegou em early data do TLS, porque pode ser um replay. O cliente deve enviá-lo de novo depois de concluído o handshake. RFC 8470
- 426 Upgrade Required
- O servidor recusa o pedido neste protocolo e indica, no cabeçalho Upgrade, o protocolo para o qual o cliente tem de mudar. RFC 9110
- 428 Precondition Required
- O servidor exige que o pedido seja condicional, por exemplo com If-Match, para que uma atualização não possa sobrescrever sem aviso uma versão mais recente. RFC 6585
- 429 Too Many Requests
- O cliente enviou demasiados pedidos num dado intervalo de tempo, o que se designa por limitação de taxa (rate limiting). O cabeçalho Retry-After pode indicar quanto tempo esperar. RFC 6585
- 431 Request Header Fields Too Large
- Os cabeçalhos no seu conjunto, ou um deles, são maiores do que o servidor aceita. Uma causa comum é um cookie demasiado grande. RFC 6585
- 451 Unavailable For Legal Reasons
- O servidor nega o acesso por causa de uma exigência legal, como uma decisão judicial. O número é uma referência ao romance Fahrenheit 451. RFC 7725
5xx Erro do servidor
O pedido pode ser válido, mas o servidor, ou um gateway à frente dele, não o conseguiu satisfazer.
- 500 Internal Server Error
- O servidor encontrou uma condição que não esperava, muitas vezes uma exceção não tratada. É nos logs do servidor que se deve procurar a causa. RFC 9110
- 501 Not Implemented
- O servidor não suporta a funcionalidade de que o pedido precisa, por exemplo um método que não reconhece. RFC 9110
- 502 Bad Gateway
- Um gateway ou proxy recebeu uma resposta inválida do servidor que está por trás dele. Muitas vezes, a aplicação por trás do proxy foi abaixo ou não está à escuta. RFC 9110
- 503 Service Unavailable
- O servidor não consegue tratar o pedido neste momento, por sobrecarga ou manutenção. O cabeçalho Retry-After pode indicar quando tentar novamente. RFC 9110
- 504 Gateway Timeout
- Um gateway ou proxy não recebeu a tempo uma resposta do servidor por trás dele. Muitas vezes, a aplicação é demasiado lenta ou não está acessível. RFC 9110
- 505 HTTP Version Not Supported
- O servidor não suporta a versão principal de HTTP usada no pedido. RFC 9110
- 506 Variant Also Negotiates
- O servidor está mal configurado: a variante escolhida pela negociação transparente de conteúdo está ela própria configurada para negociar, o que cria um ciclo. RFC 2295
- 507 Insufficient Storage
- O servidor não consegue guardar aquilo de que precisa para concluir o pedido. Está definido para o WebDAV. RFC 4918
- 508 Loop Detected
- O servidor parou uma operação WebDAV porque encontrou um ciclo infinito ao seguir os bindings. RFC 5842
- 510 Not Extended
- Falta ao pedido uma extensão que o servidor exige. A especificação que definiu o código tem agora o estatuto de histórica, e o registo da IANA marca o código como obsoleto. RFC 2774
- 511 Network Authentication Required
- O cliente tem de se autenticar para ter acesso à rede. Quem o envia é um portal cativo, como a página de início de sessão do Wi-Fi de um hotel, e não o site que foi pedido. RFC 6585
Códigos não padrão
Estes códigos não constam do registo da IANA. Cada um pertence a um servidor ou serviço específico, e o seu significado só vale aí.
- 419 Page Expired Não padrão
- O Laravel envia-o quando o token CSRF de um formulário está em falta ou expirou. Laravel
- 444 No Response Não padrão
- Uma configuração do nginx pode devolver 444 para fechar a ligação sem enviar resposta. Aparece no log do nginx, e o cliente não recebe nada. nginx
- 494 Request Header Too Large Não padrão
- O nginx usa-o internamente quando os cabeçalhos do pedido não cabem nos seus buffers. O cliente recebe uma resposta 400. nginx
- 495 SSL Certificate Error Não padrão
- O nginx usa-o internamente quando falha a verificação de um certificado de cliente. A menos que a configuração o trate, o cliente recebe uma resposta 400. nginx
- 496 SSL Certificate Required Não padrão
- O nginx usa-o internamente quando o cliente não apresentou o certificado que o servidor exige. nginx
- 497 HTTP Request Sent to HTTPS Port Não padrão
- O nginx usa-o internamente quando um pedido HTTP simples chega a uma porta que espera HTTPS. nginx
- 499 Client Closed Request Não padrão
- O nginx regista-o quando o cliente fechou a ligação antes de o servidor ter respondido. Muitas vezes significa que o timeout do cliente é mais curto do que o tempo que a aplicação demora. nginx
- 509 Bandwidth Limit Exceeded Não padrão
- Os painéis de controlo de alojamento, como o cPanel, enviam-no quando um site esgotou a sua quota de largura de banda. cPanel
- 520 Web Server Returned an Unknown Error Não padrão
- A Cloudflare envia-o quando o servidor de origem devolveu uma resposta vazia, desconhecida ou inesperada. Cloudflare
- 521 Web Server Is Down Não padrão
- A Cloudflare envia-o quando o servidor de origem recusou a ligação. Cloudflare
- 522 Connection Timed Out Não padrão
- A Cloudflare envia-o quando não conseguiu estabelecer a tempo uma ligação TCP ao servidor de origem. Cloudflare
- 523 Origin Is Unreachable Não padrão
- A Cloudflare envia-o quando não conseguiu chegar ao servidor de origem, por exemplo por causa de um registo DNS errado ou de um problema de encaminhamento. Cloudflare
- 524 A Timeout Occurred Não padrão
- A Cloudflare ligou-se ao servidor de origem, mas a origem não enviou uma resposta HTTP a tempo. Cloudflare
- 525 SSL Handshake Failed Não padrão
- A Cloudflare envia-o quando falhou o handshake TLS entre a Cloudflare e o servidor de origem. Cloudflare
- 526 Invalid SSL Certificate Não padrão
- A Cloudflare envia-o quando não conseguiu validar o certificado TLS do servidor de origem. Cloudflare