DevToolPal
IT
4xx Errori del client

412 Precondition Failed

Precondizione fallita

Cosa significa

Una precondizione negli header, come If-Match o If-Unmodified-Since, è risultata falsa, quindi il server non ha applicato la richiesta.

Cause comuni

  • Qualcun altro ha aggiornato la risorsa (l'ETag è cambiato)
  • ETag in cache obsoleto usato in If-Match
  • Upload condizionale verso uno storage che ha già un oggetto più recente

Come risolvere

Lato client o visitatore

Rifai un GET della risorsa per ottenere l'ETag attuale, riapplica le modifiche e invia di nuovo.

Lato gestore del sito o dell’API

Restituisci l'ETag attuale e rendi i controlli condizionali atomici con la scrittura.

Risposta di esempio

HTTP/1.1
HTTP/1.1 412 Precondition Failed
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "v8"
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Failed",
  "status": 412,
  "detail": "If-Match \"v7\" does not match the current version \"v8\"."
}

Specifica

RFC 9110 §15.5.13

Domande frequenti

› Cos'è il controllo di concorrenza ottimistico?

I client inviano If-Match con l'ETag letto; il server rifiuta la scrittura con 412 se nel frattempo la risorsa è cambiata.

› 412 o 428?

412: la tua precondizione è fallita. 428: devi inviare una precondizione.