Skip to main content

🤷‍♂️ Error 417 – Falló la expectativa (Expectation Failed)

El error 417 aparece cuando el servidor no puede cumplir con la expectativa indicada por el cliente en la cabecera:


Expect: 100-continue

El cliente usa esta cabecera para decirle al servidor:
“Dime si está todo OK antes de enviarte el cuerpo completo de la solicitud.”

Si el servidor no puede aceptar esa expectativa o no la soporta, devuelve 417.


Causas más comunes

  • 📩 El servidor no soporta la cabecera Expect: 100-continue.

  • 🚫 El servidor rechaza la solicitud antes de recibir el cuerpo (body).

  • 🔧 Configuraciones incorrectas en proxies o balanceadores.

  • 🧩 Librerías HTTP que agregan Expect: 100-continue automáticamente.

  • 📦 Envío de archivos grandes donde el cliente pregunta si puede continuar.

  • 🔐 El servidor o firewall considera la expectativa como sospechosa.

  • ⚙️ El servidor requiere otros encabezados o condiciones que no se cumplen.


🔧 Soluciones recomendadas

1️⃣ Eliminar la cabecera Expect: 100-continue (la solución más común)

Muchos servidores simplemente no soportan esta expectativa.

En cURL:


curl -H "Expect:" -d "data=x" https://api.com/endpoint

En Axios:


axios.post(url, data, { headers: { 'Expect': '' } });

En Node.js con http:


const options = { headers: { Expect: '' } };

2️⃣ Configurar el servidor para aceptar 100-continue

En Nginx:

Nginx ignora esta cabecera por defecto.
Para evitar 417, permite manejarla adecuadamente o elimínala en el balanceador.

En Apache:

Asegura que mod_proxy o mod_http no bloqueen solicitudes con esta cabecera.


3️⃣ Desactivar expectativas automáticas en librerías

Algunas librerías envían Expect: 100-continue si el body es grande.

Ejemplos:

  • cURL

  • Python Requests

  • .NET HttpClient

Debes desactivarlo en configuraciones avanzadas.


4️⃣ Revisar si un proxy está interfiriendo

Los proxies corporativos suelen rechazar solicitudes con esta cabecera.

Solución:

  • Configurar el proxy para permitirla

  • O eliminar la cabecera desde la aplicación


5️⃣ Corregir solicitudes mal formadas

Si envías una expectativa inválida:


Expect: algo-raro

→ 417 inmediato.

Solo se admite normalmente:


Expect: 100-continue

6️⃣ Usar directamente una petición normal sin expectativa

En la mayoría de casos, enviar el body sin solicitar permiso previo es suficiente.


🔐 Consejo Pro

El uso de Expect: 100-continue solo es útil cuando:

  • Envías archivos muy grandes

  • Quieres evitar subir todo el archivo si el servidor lo va a rechazar

Si no lo necesitas, elimínalo siempre.
Esto evita errores 417 y simplifica tus solicitudes.