📝 Error 428 – Se requiere precondición (Precondition Required)
El error 428 indica que el servidor exige que la solicitud incluya una precondición, normalmente con cabeceras como:
-
If-Match -
If-None-Match -
If-Unmodified-Since -
If-Modified-Since
Estas precondiciones permiten que el servidor evite modificaciones peligrosas, inconsistencias o ediciones simultáneas.
Si el cliente no envía estas precondiciones → el servidor rechaza la solicitud con un 428.
Es muy usado en APIs REST, sistemas con control de versiones, ediciones colaborativas y recursos críticos.
✅ Causas más comunes
-
📌 La solicitud intenta modificar un recurso sin validar si fue cambiado antes.
-
🔐 El servidor requiere un ETag (
If-Match) para evitar sobrescrituras. -
📅 No se incluyó una cabecera condicional obligatoria.
-
🧩 La API protege recursos sensibles y exige control de concurrencia.
-
🛑 El servidor impide actualizaciones sin verificar precondiciones.
-
⚙️ El cliente no está enviando los encabezados adecuados.
🔧 Soluciones recomendadas
1️⃣ Enviar el encabezado If-Match con el ETag del recurso
Ejemplo:
El servidor devuelve este ETag:
Tu actualización debe enviarlo así:
Si no lo envías → 428.
2️⃣ Usar If-Unmodified-Since
El servidor solo aceptará la actualización si el recurso no ha cambiado desde la fecha dada.
Ejemplo:
3️⃣ Enviar If-None-Match para evitar duplicados
Útil para creación de recursos:
Esto evita que se creen duplicados accidentales.
4️⃣ Actualizar primero el recurso
Antes de modificar:
Haz un GET para obtener:
-
Estado actual
-
ETag
-
Fecha de última modificación
Luego reintenta la acción con las precondiciones.
5️⃣ Corregir tu cliente o librería HTTP
Ejemplos:
En Axios:
En cURL:
En Fetch:
6️⃣ Revisar documentación de la API
Muchas APIs definen claramente:
-
Qué precondición es obligatoria
-
Qué encabezado enviar
-
Por qué seguridad se requiere
Ejemplos: APIs de Google, Microsoft, GitHub, Stripe, etc.
🔐 Consejo Pro
El error 428 existe para prevenir pérdidas de datos.
Es una medida de seguridad contra:
-
Ediciones simultáneas
-
Sobrescrituras accidentales
-
Condiciones de carrera (race conditions)
-
Actualizaciones peligrosas sin control de versiones
No comments to display
No comments to display