A URL é mais longa do que o servidor aceita.
Quando usar
Query strings enormes. Mova os dados para o corpo de um POST.
Causas comuns e soluções
A URL da requisição excede um limite. Gatilhos típicos: query strings enormes montadas a partir de filtros ou listas de IDs, dados em base64 na URL, loops de redirecionamento que acrescentam um parâmetro a cada volta (um returnUrl aninhado dentro de outro returnUrl) e parâmetros de rastreamento empilhados. O nginx responde 414 quando a linha de requisição não cabe em large_client_header_buffers, 8k por padrão, e o LimitRequestLine do Apache é de 8190 bytes.
Mantenha as URLs abaixo de uns 2.000 caracteres para não ter problemas com navegadores, CDNs, ferramentas de analytics e de logs; a Cloudflare limita URLs a 16 KB. A solução é mover os dados para o corpo de um POST, ou enviar o filtro via POST a um endpoint de busca que retorna um ID curto para colocar na URL. Aumentar os limites do servidor funciona, mas cada proxy na cadeia tem o seu próprio limite.
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 414 URI Too LongComo enviar
| Node.js / Express | res.status(414).end() |
|---|---|
| Python / Flask | return '', 414 |
| nginx | return 414; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/