Código de status HTTP · Erros do servidor (5xx)
Erro 510 Not Extended
O 510 Not Extended significava que o pedido não atendia à política do servidor para acessar o recurso, porque faltava uma extensão obrigatória declarada pelo HTTP Extension Framework da RFC 2774. Esse framework nunca foi adotado, a RFC 2774 hoje é Historic e a IANA marca o 510 como obsoleto.
| Classe | 5xx, Erros do servidor |
|---|---|
| Definido em | RFC 2774 §7 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Só se a resposta disser qual extensão incluir e o cliente souber incluí-la |
| Cabeçalhos relevantes |
|
| Situação | Obsoleto: Obsoleto: a RFC 2774 foi movida para Historic, e a IANA lista o 510 como "Not Extended (OBSOLETED)". |
O que significa o 510
A RFC 2774 (fevereiro de 2000) propôs um jeito de declarar extensões HTTP obrigatórias com os cabeçalhos Man e Opt e o prefixo M- nos métodos. A seção 7 define o 510 para um pedido que não atende à política de acesso ao recurso; a resposta deveria trazer tudo que o cliente precisa para mandar um pedido estendido.
O experimento terminou sem uso real. O IETF moveu a RFC 2774 para Historic junto com outros experimentos antigos do HTTP, e o registro da IANA agora lista o código como "Not Extended (OBSOLETED)". Se você encontrar esse código hoje, quase certamente é uma aplicação usando o número por conta própria.
Causas comuns
Se você administra o servidor
- Uma aplicação ou framework que reaproveita o 510 para a própria verificação de "extensão ausente" ou "feature flag ausente".
- Software legado construído em cima do framework de extensões da RFC 2774.
Como resolver
Se você administra o servidor
- Troque por um código registrado que diga o problema real: 400 ou 422 para cabeçalho ou parâmetro obrigatório ausente, 426 para exigir troca de protocolo, 403 para recusa por política.
Como enviar um 510
Não envie 510 em código novo. Clientes e bibliotecas só vão entendê-lo como um 500 genérico.
Costuma ser confundido com
- 510 vs 426
- O 426 Upgrade Required é o jeito padrão e vigente de dizer "troque de protocolo antes"; o 510 tratava de extensões do HTTP e está obsoleto.
- 510 vs 428
- O 428 Precondition Required pede ao cliente um cabeçalho condicional como If-Match; ele cobre um dos poucos casos de "você precisa acrescentar algo ao pedido" que ainda importam.
Perguntas frequentes
- O 510 Not Extended ainda vale?
- Ele continua no registro da IANA, mas marcado como obsoleto, porque o HTTP Extension Framework da RFC 2774, de onde ele vem, foi movido para Historic. Software novo não deve usar.
- O que usar no lugar do 510?
- Escolha o código do problema real: 400 ou 422 para cabeçalho ou parâmetro obrigatório ausente, 426 Upgrade Required para exigir outro protocolo, 403 Forbidden para recusa por política.
- O que era o HTTP Extension Framework?
- Um desenho experimental da RFC 2774 que permitia ao cliente declarar extensões obrigatórias ou opcionais com os cabeçalhos Man e Opt, para o servidor recusar pedidos sem a extensão exigida. Nunca teve implementações reais.
Revisado em por Arielton Oberek.