408 Request Timeout

El cliente tardó demasiado en enviar la solicitud.

Cuándo usarlo

Conexiones inactivas. Los clientes pueden reintentar sin riesgo.

Causas habituales y soluciones

El servidor cerró la conexión porque el cliente no envió una solicitud completa a tiempo. Causas habituales: redes móviles lentas durante subidas grandes, conexiones que los navegadores abren de forma especulativa y por las que luego no envían nada, y conexiones keep-alive inactivas más allá del límite del servidor. En nginx, los temporizadores son client_header_timeout y client_body_timeout, ambos de 60 segundos por defecto.

Los navegadores reintentan de forma transparente cuando se cierra una conexión keep-alive inactiva, así que los usuarios rara vez ven un 408; sobre todo lo notarás en los logs de acceso, donde las entradas sin línea de solicitud vienen de preconexiones y son inofensivas. Para subidas grandes en conexiones lentas, aumenta client_body_timeout o pasa a subidas por fragmentos y reanudables. Los clientes pueden reintentar sin riesgo, ya que el servidor nunca procesó la solicitud.

Error del cliente (4xx)

Los códigos 4xx son errores del cliente: la solicitud en sí es incorrecta, no está autorizada o apunta a algo que no existe. Repetir la misma solicitud no servirá de nada.

Cómo se ve

HTTP/1.1 408 Request Timeout

Cómo enviarlo

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

Cómo comprobarlo

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

Abrir Códigos de estado HTTP