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.