Código de status HTTP · Erros do servidor (5xx)
Erro 506 Variant Also Negotiates
O erro 506 Variant Also Negotiates significa que a negociação de conteúdo do servidor está mal configurada: a variante escolhida para você também está configurada para negociar, então não há uma representação final para enviar. Na prática, a causa é um type map do Apache ou MultiViews em que uma variante aponta para outro type map.
| Classe | 5xx, Erros do servidor |
|---|---|
| Definido em | RFC 2295 §8.1 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Não; é um erro de configuração do servidor |
| Cabeçalhos relevantes |
|
O que significa o 506
A RFC 2295, seção 8.1, define o 506 como um erro interno de configuração na negociação transparente de conteúdo (TCN): o recurso da variante escolhida está configurado para negociar também, então não é um ponto final válido. O TCN foi um protocolo experimental de 1998 que nunca pegou, por isso o 506 é um dos códigos mais raros do registro.
A única implementação conhecida no mundo real é o mod_negotiation do Apache. O código-fonte dele devolve 506 quando um recurso negociado de forma transparente escolhe uma variante que também é um type map ou que também envia o cabeçalho TCN, o que criaria uma negociação recursiva.
Causas comuns
Se você administra o servidor
- Um type map .var do Apache lista como variante uma URI que é outro arquivo .var.
- MultiViews está ligado e uma variante escolhida por ele também é negociada.
Como resolver
Se você administra o servidor
- Aponte cada variante do type map para um arquivo concreto, nunca para outro type map.
- Se não precisa de negociação, desligue o MultiViews (Options -MultiViews) e sirva URLs explícitas por idioma ou formato.
Como enviar um 506
Não há motivo para enviar 506 pelo código da aplicação. Ele é produzido pelo módulo de negociação do servidor web quando a configuração entra em laço.
Costuma ser confundido com
- 506 vs 406
- O 406 Not Acceptable indica que a negociação funcionou mas nenhuma variante atende ao que o cliente aceita; o 506 indica que a própria negociação está quebrada no servidor.
- 506 vs 300
- O 300 Multiple Choices entrega a lista de variantes para o cliente escolher; o 506 indica que o servidor tentou escolher e achou uma variante que negociaria de novo.
Perguntas frequentes
- O 506 Variant Also Negotiates ainda é usado?
- Muito pouco. Ele pertence à negociação transparente de conteúdo da RFC 2295, um protocolo experimental que os navegadores nunca adotaram. O mod_negotiation do Apache ainda pode gerá-lo quando os type maps estão configurados em recursão.
- O visitante consegue resolver um erro 506?
- Não. É um laço na configuração do servidor. Mudar o idioma do navegador ou os formatos aceitos pode desviar do problema por acaso, mas só o dono do site corrige o type map ou o MultiViews.
- O que é negociação transparente de conteúdo?
- Uma extensão da RFC 2295 em que o servidor anuncia as variantes disponíveis de um recurso (por idioma, formato ou codificação) no cabeçalho Alternates, para o cliente ou o cache escolher a melhor. Sites modernos usam os cabeçalhos Accept com Vary no lugar.
Revisado em por Arielton Oberek.