As mensagens e códigos de resposta HTTP são fundamentais para a comunicação entre clientes e servidores web, eles indicam o resultado de uma requisição HTTP, fornecendo informações sobre o status do processamento da solicitação. Essas respostas são divididas em diferentes categorias, representadas por códigos numéricos (geralmente de três dígitos) que indicam o tipo de resposta.
Neste artigo, abordaremos cada categoria de códigos de status HTTP, explicando suas funções.
<br/>
Categorias de Códigos de Status HTTP
Os códigos de status HTTP podem ser divididos em cinco classes principais, cada uma representada pelo primeiro dígito do código:
- 1xx - Informativos: A solicitação foi recebida, e o processo continua.
- 2xx - Sucesso: A solicitação foi recebida, compreendida e processada com sucesso.
- 3xx - Redirecionamento: A ação solicitada precisa de redirecionamento.
- 4xx - Erros do Cliente: Houve um problema com a solicitação do cliente.
- 5xx - Erros do Servidor: O servidor falhou ao processar uma solicitação válida.
<br/>
1xx - Respostas Informativas
Os códigos 1xx indicam que a solicitação foi recebida e que o servidor ainda está processando-a. Eles são raramente vistos por usuários comuns, pois geralmente ocorrem em situações específicas de comunicação entre cliente e servidor.
100 Continue: O cliente deve continuar com a solicitação. Isso ocorre após o cliente enviar parte dos dados, como um cabeçalho, e o servidor o autoriza a enviar o corpo da solicitação.
101 Switching Protocols: O servidor aceita trocar o protocolo conforme solicitado pelo cliente (por exemplo, para WebSockets).
103 Early Hints: O servidor está retornando informações antecipadas que permitem ao cliente começar a pré-carregar recursos enquanto o servidor ainda está processando a resposta final.
<br/>
2xx - Respostas de Sucesso
Os códigos 2xx indicam que a solicitação foi bem-sucedida e o servidor conseguiu processá-la.
200 OK: A solicitação foi bem-sucedida e o servidor devolve o conteúdo solicitado. Este é o código mais comum para respostas HTTP.
201 Created: A solicitação foi processada com sucesso e resultou na criação de um novo recurso.
202 Accepted: A solicitação foi recebida, mas o processamento ainda não foi concluído. O servidor aceitou o pedido para processá-lo, mas a conclusão pode ocorrer em um tempo posterior.
203 Non-Authoritative Information: O servidor processou a solicitação com sucesso, mas retornou informações de terceiros ou modificadas, em vez dos dados originais da fonte.
204 No Content: A solicitação foi bem-sucedida, mas não há conteúdo para enviar na resposta. Este código é útil para operações que não necessitam de uma resposta significativa, como em requisições DELETE.
205 Reset Content: Indica que a solicitação foi bem-sucedida e o cliente deve redefinir a visualização que está exibindo (ex.: recarregar o formulário).
206 Partial Content: Indica que o servidor está retornando apenas uma parte do recurso, conforme solicitado pelo cliente. Geralmente utilizado para downloads de arquivos grandes.
226 IM Used: O servidor processou com sucesso uma solicitação GET e retornou a resposta com um ou mais manipulações de instâncias, como definido no cabeçalho IM. Utilizado em situações de otimização, como em caches de conteúdo.
<br/>
3xx - Redirecionamento
Os códigos 3xx indicam que a solicitação requer mais ações por parte do cliente para ser concluída, geralmente redirecionamentos para outras URLs.
300 Multiple Choices: Indica que há várias opções para o recurso solicitado, e o usuário ou o agente de usuário deve escolher uma delas.
301 Moved Permanently: O recurso solicitado foi movido permanentemente para outro URL, e o cliente deve usar a nova URL para futuras solicitações.
302 Found: O recurso foi temporariamente movido para outro URL. No entanto, o cliente deve continuar a usar a URL original para futuras requisições.
303 See Other: Indica que o cliente deve buscar o recurso solicitado em outra URL usando o método GET. Usado geralmente após uma operação POST para redirecionar o usuário.
304 Not Modified: Indica que o recurso solicitado não foi modificado desde a última vez que foi solicitado. Usado em caching, permitindo que o cliente reutilize uma versão armazenada localmente.
305 Use Proxy (descontinuado nas versões mais recentes de HTTP): Indica que o recurso solicitado deve ser acessado através de um proxy especificado no cabeçalho da resposta. Esse código foi descontinuado por questões de segurança.
307 Temporary Redirect: Similar ao 302 Found, mas garante que o método de requisição (GET, POST, etc.) não seja alterado ao seguir a nova URL.
308 Permanent Redirect: Similar ao 301 Moved Permanently, mas o método HTTP deve ser preservado. A URL mudou permanentemente e o cliente deve usar a nova URL em todas as requisições futuras.
<br/>
4xx - Erros do Cliente
Os códigos 4xx indicam que houve um problema com a solicitação do cliente, como um erro de sintaxe, falta de autenticação, ou o recurso solicitado não existir.
400 Bad Request: A solicitação é inválida, seja por erros de sintaxe ou parâmetros incorretos. O servidor não processa a solicitação.
401 Unauthorized: O cliente precisa se autenticar para obter acesso ao recurso. Esse código é comum quando o cliente falha em fornecer credenciais adequadas.
402 Payment Required: Originalmente pensado para uso em sistemas de pagamento online, mas não é amplamente utilizado atualmente.
403 Forbidden: O cliente está autenticado, mas não tem permissão para acessar o recurso solicitado.
404 Not Found: O recurso solicitado não foi encontrado no servidor.
405 Method Not Allowed: O método HTTP usado na solicitação (GET, POST, etc.) não é permitido para o recurso solicitado.
406 Not Acceptable: O servidor não consegue retornar uma resposta compatível com os cabeçalhos de aceitação do cliente (como o tipo de conteúdo solicitado).
407 Proxy Authentication Required: Semelhante ao 401 Unauthorized, mas indica que a autenticação é necessária com um proxy.
408 Request Timeout: O servidor não recebeu uma solicitação completa dentro do tempo limite e, portanto, encerrou a conexão.
409 Conflict: Indica que a solicitação não pode ser processada devido a um conflito com o estado atual do recurso. É comum em sistemas de controle de versões.
410 Gone: O recurso solicitado foi removido permanentemente e não está mais disponível no servidor.
411 Length Required: O servidor requer um cabeçalho Content-Length, mas ele não foi fornecido na solicitação.
412 Precondition Failed: Uma ou mais condições fornecidas no cabeçalho da solicitação são avaliadas como falsas pelo servidor.
413 Payload Too Large: O corpo da solicitação é maior do que o servidor está disposto ou pode processar.
414 URI Too Long: A URI (Uniform Resource Identifier) fornecida é muito longa para o servidor processar.
415 Unsupported Media Type: O tipo de mídia do corpo da solicitação não é suportado pelo servidor.
416 Range Not Satisfiable: O cabeçalho Range da solicitação especifica um intervalo que não pode ser atendido, geralmente porque está fora dos limites do recurso.
417 Expectation Failed: O servidor não pode atender a um cabeçalho Expect fornecido na solicitação.
421 Misdirected Request: O servidor recebeu uma solicitação direcionada a um servidor incorreto ou inadequado.
422 Unprocessable Entity: O servidor entende a solicitação, mas não pode processá-la devido a erros semânticos.
425 Too Early: O servidor se recusa a processar a solicitação porque ela pode ser repetida devido a algum risco (geralmente relacionado a replay attacks).
426 Upgrade Required: O cliente deve mudar para um protocolo diferente (por exemplo, mudar de HTTP/1.1 para HTTP/2).
428 Precondition Required: O servidor requer que a solicitação seja condicionada (como o uso de If-Match para evitar atualizações concorrentes).
429 Too Many Requests: O cliente fez muitas requisições em um curto período de tempo. Geralmente usado em sistemas com limite de taxa (rate-limiting).
431 Request Header Fields Too Large: O servidor se recusa a processar a solicitação porque os campos do cabeçalho são muito grandes.
451 Unavailable For Legal Reasons: O recurso foi bloqueado por motivos legais. Usado quando o acesso a um recurso foi restrito por ordens judiciais ou por leis de privacidade.
<br/>
5xx - Erros do Servidor
Os códigos 5xx indicam que o servidor falhou ao processar uma solicitação válida devido a um problema interno.
500 Internal Server Error: Um erro genérico que indica que o servidor encontrou uma condição inesperada e não consegue processar a solicitação.
501 Not Implemented: O servidor não tem a funcionalidade necessária para atender à solicitação. Isso pode acontecer se o método HTTP não for reconhecido ou suportado.
502 Bad Gateway: O servidor, atuando como um gateway ou proxy, recebeu uma resposta inválida do servidor upstream.
503 Service Unavailable: O servidor está temporariamente indisponível, geralmente devido a manutenção ou sobrecarga.
504 Gateway Timeout: O servidor, atuando como um gateway ou proxy, não recebeu uma resposta oportuna do servidor upstream.
505 HTTP Version Not Supported: O servidor não suporta a versão do protocolo HTTP usada na solicitação.
506 Variant Also Negotiates: O servidor encontrou uma configuração de negociação de conteúdo circular. Esse erro é relacionado ao uso de variantes de conteúdo.
510 Not Extended: O servidor precisa de mais extensões para atender à solicitação. Este código é usado quando o servidor requer mais informações para completar a solicitação.
511 Network Authentication Required: O cliente precisa se autenticar para acessar a rede. Esse código é geralmente usado por proxies que exigem autenticação antes de permitir o acesso à internet.
<br/>
Conclusão
Compreender os códigos e mensagens de resposta HTTP é essencial para o desenvolvimento de aplicações web. Eles facilitam a comunicação entre cliente e servidor, indicam o status das operações e ajudam a diagnosticar problemas. Ao usar corretamente esses códigos, desenvolvedores podem criar sistemas mais eficientes, informativos e fáceis de manter.