408 Request Timeout

O cliente demorou demais para enviar a requisição.

Quando usar

Conexões ociosas. Os clientes podem tentar de novo com segurança.

Causas comuns e soluções

O servidor fechou a conexão porque o cliente não enviou uma requisição completa a tempo. Causas comuns: redes móveis lentas durante uploads grandes, conexões abertas especulativamente pelos navegadores que depois não enviam nada, e conexões keep-alive ociosas além do limite do servidor. No nginx, os timers são client_header_timeout e client_body_timeout, ambos de 60 segundos por padrão.

Os navegadores tentam de novo de forma transparente quando uma conexão keep-alive ociosa é fechada, então os usuários raramente veem o 408; você o nota principalmente nos logs de acesso, onde entradas sem linha de requisição vêm de preconnects e são inofensivas. Para uploads grandes em conexões lentas, aumente client_body_timeout ou mude para uploads em partes e retomáveis. Os clientes podem tentar de novo com segurança, já que o servidor nunca processou a requisição.

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 408 Request Timeout

Como enviar

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

Como verificar

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

Abrir Códigos de status HTTP