Skip to content

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.

Dados sobre este código de status
Classe5xx, Erros do servidor
Definido emRFC 2295 §8.1
Pode ir para o cache por padrãoSó com Cache-Control ou Expires explícitos
Pode repetir o pedidoNão; é um erro de configuração do servidor
Cabeçalhos relevantes
  • TCN: o cabeçalho de negociação transparente de conteúdo da RFC 2295, que marca um recurso negociador
  • Alternates: a lista de variantes da RFC 2295 que um recurso negociador pode devolver

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.