Skip to main content

⏱️ Error 425 – Demasiado temprano (Too Early)

El error 425 Too Early indica que el servidor se rehúsa a procesar la solicitud porque podría ser un riesgo de seguridad si se reenvía automáticamente.

Este código se introdujo para HTTP/2 y HTTP/3 y está relacionado con el manejo de 0-RTT en TLS, una técnica que permite que un cliente envíe solicitudes antes de completar la negociación segura completa.
Sin embargo, estas solicitudes pueden ser vulnerables a ataques de repetición (replay attacks).

En resumen:
El servidor dice:
“Tu solicitud llegó demasiado pronto. No la procesaré porque podría ser peligrosa si se repite.”


Causas más comunes

  • 🔐 El cliente envía una solicitud usando 0-RTT (TLS early data).

  • 🛡️ El servidor detecta un posible ataque de repetición (replay attack).

  • ⚙️ El servidor está configurado para no aceptar solicitudes sensibles demasiado temprano.

  • 🚫 Un proxy o CDN (como Cloudflare o AWS) rechaza solicitudes inseguras.

  • 🌐 Clientes o navegadores reenviando una petición antes de que la sesión TLS esté completamente establecida.


🔧 Soluciones recomendadas

1️⃣ Reintentar la solicitud de manera normal (sin early data)

Los navegadores modernos ya lo hacen automáticamente.
El cliente debe reenviar la solicitud después de completar la negociación TLS.


2️⃣ Desactivar 0-RTT en el cliente (si es una app o API)

Ejemplo en curl:


curl --no-early-data https://tuapi.com

En Node.js (HTTP/2):


createSecureServer({ maxEarlyDataSize: 0 });

3️⃣ Configurar el servidor para aceptar early data (si es seguro hacerlo)

Solo recomendado para:

  • Solicitudes idempotentes (GET, HEAD)

  • Peticiones de lectura sin consecuencias

Nginx:


ssl_early_data on;

Apache:

Soporte a través de módulos TLS específicos.

⚠️ Nunca permitas early data para POST, PUT, DELETE, ya que pueden repetirse maliciosamente.


4️⃣ Corregir el tipo de solicitud

Si un cliente envía una operación destructiva (como una compra, transferencia o cambio de datos) usando early data → el servidor devolverá 425.

Solución:
Enviar solo solicitudes seguras en early data o desactivarlo.


5️⃣ Revisar configuración de Cloudflare u otros proxies

Cloudflare y CDNs rechazan por defecto early data en:

  • Formularios

  • APIs

  • Consultas sensibles

Puedes desactivar 0-RTT desde el panel si causa errores.


🔐 Consejo Pro

El 425 protege al servidor contra ataques donde:

  • Una petición maliciosa se reenvía múltiples veces

  • Se intenta repetir una operación crítica (compra, pago, actualización)

  • Un proxy reenvía datos antes de tiempo accidentalmente

Por eso, la recomendación general es:

✔️ Solo usar early data para lecturas
❌ Evitar early data para escrituras o transacciones