406 Not Acceptable

Nenhuma representação corresponde ao cabeçalho Accept.

Quando usar

O cliente pediu XML a uma API que só fala JSON.

Causas comuns e soluções

O 406 aparece quando o servidor leva o cabeçalho Accept ao pé da letra: o cliente pede application/xml ou um tipo vendor específico, e o servidor só consegue produzir outra coisa. Alguns frameworks, como blocos respond_to do Rails e endpoints do Spring com produces, retornam 406 em vez de recorrer a um formato padrão. Envie Accept: application/json, ou omita o cabeçalho, e confira o que o seu cliente HTTP envia por padrão.

Em hospedagem compartilhada, o ModSecurity e firewalls de aplicação web parecidos há muito tempo respondem a requisições bloqueadas com 406, o que parece um problema de negociação de conteúdo, mas na verdade é uma regra de segurança; confira o log do WAF ou pergunte à hospedagem. Ao projetar uma API, a especificação permite ignorar um Accept não suportado e retornar o seu formato padrão, o que geralmente é mais amigável que um 406.

Erro do cliente (4xx)

Os códigos 4xx são erros do cliente: a própria requisição está errada, não está autorizada ou aponta para algo que não existe. Repetir a mesma requisição não vai adiantar.

Como fica

HTTP/1.1 406 Not Acceptable

Como enviar

Node.js / Expressres.status(406).end()
Python / Flaskreturn '', 406
nginxreturn 406;

Como verificar

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de status HTTP