⚠️ Error 412 – Falló la precondición
El error 412 ocurre cuando el servidor rechaza la solicitud porque no se cumplen las condiciones previas que el cliente envió en las cabeceras.
Es decir: el cliente dijo “haz esto solo si se cumple tal condición”, pero el servidor verificó que no se cumple, y por eso rechaza la operación.
Este error es común en APIs REST, sistemas con control de versiones y validaciones de integridad.
✅ Causas más comunes
-
📌 La cabecera
If-Matchno coincide (el recurso cambió desde la última vez que el cliente lo vio). -
📝 La cabecera
If-Unmodified-Sincefalla porque el recurso sí fue modificado. -
🔁 Ediciones simultáneas del mismo recurso generan conflicto.
-
🔐 Control de versiones (ETags) no coincide, indicando datos desactualizados.
-
⚙️ El cliente está enviando información vieja o corrupta.
-
🧩 Reglas de negocio que exigen que el recurso esté en un estado específico.
🔧 Soluciones recomendadas
1️⃣ Actualizar el recurso antes de modificarlo
El 412 ocurre porque el cliente tiene una versión antigua del recurso.
Solución:
Haz un GET del recurso → obtén la versión actual → vuelve a intentar la operación.
2️⃣ Verificar cabeceras condicionales
If-Match
El servidor solo ejecutará la operación si el ETag coincide:
Si cambia, devuelve 412.
If-Unmodified-Since
El servidor solo procede si el recurso NO ha sido modificado desde esa fecha.
Si alguien editó el recurso → 412.
3️⃣ Usar control de versiones correcto con ETags
Ejemplo en la respuesta:
Si intentas modificarlo usando otra versión → 412.
4️⃣ Resolver conflictos de edición simultánea
En sistemas colaborativos:
-
Dos usuarios editan el mismo documento.
-
El segundo usuario intenta guardar sin saber que el primero ya modificó.
Solución:
Mostrar mensaje elegante:
“Este recurso fue modificado por otro usuario. Actualiza antes de continuar.”
5️⃣ Revisar reglas de negocio
Ejemplos:
-
No puedes actualizar un pedido que ya está “cerrado”.
-
No puedes eliminar un recurso si sigue siendo referenciado.
Cuando estas condiciones no se cumplen → 412.
6️⃣ Corregir integraciones de APIs
APIs como Google, Amazon, Stripe, Microsoft o APIs REST personalizadas usan 412 si:
-
El cliente no envía ETag
-
Envía ETag incorrecto
-
Intenta modificar un recurso fuera de estado permitido
Revisar documentación del endpoint.
🔐 Consejo Pro
Usa condiciones previas para evitar errores de concurrencia:
-
En APIs: utiliza
If-Matchcon ETags para actualizaciones. -
En sistemas colaborativos: implementa control de versiones.
-
En sitios con alta concurrencia: valida que el recurso no cambió desde que el usuario lo abrió.
Esto evita pérdida de información y sobreescritura accidental.
No comments to display
No comments to display