412 Precondition Failed indica che una o più condizioni nelle intestazioni della richiesta sono risultate false. È l’esito di un If-Match o di un If-Unmodified-Since non soddisfatto, oppure di un If-None-Match non soddisfatto con metodi diversi da GET e HEAD. Il server non ha eseguito l’azione richiesta.
Il suo scopo principale è evitare la perdita di aggiornamenti (controllo ottimistico della concorrenza). Un client legge una risorsa insieme al suo ETag, la modifica e invia la modifica con If-Match e quell’ETag. Se nel frattempo qualcun altro ha modificato la risorsa, l’ETag non corrisponde più e il server risponde 412 invece di sovrascrivere l’altra modifica. Si usa anche con If-None-Match: * per creare una risorsa solo se non esiste ancora.
Per GET e HEAD, un If-None-Match o un If-Modified-Since falso produce 304 Not Modified, non 412.
Esempio di risposta
HTTP/1.1 412 Precondition Failed
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "v8"
Content-Type: application/json
Content-Length: 52
{"error":"If-Match does not match the current ETag"} SEO e verifica dei redirect
Il 412 si verifica con le scritture condizionali nelle API e in WebDAV, non durante la scansione; le richieste GET condizionali dei crawler danno come risultato 304 o 200. Se una verifica redirect mostra un 412, controlla le intestazioni If-* che hai aggiunto come intestazioni di richiesta personalizzate.
Cause comuni e casi d’uso
- Una modifica è stata rifiutata perché la risorsa è cambiata dopo essere stata letta (ETag non corrispondente).
If-None-Match: *ha impedito la sovrascrittura di un file esistente.- L’API di un cloud storage o di una CDN ha ricevuto una richiesta condizionale con un ETag non aggiornato.