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
Siempre usa ETags y precondiciones cuando modifiques recursos importantes.