412 Precondition Failed signifie qu’une ou plusieurs conditions des en-têtes de la requête se sont révélées fausses. C’est le résultat d’un If-Match ou d’un If-Unmodified-Since non satisfait, ou d’un If-None-Match non satisfait sur une méthode autre que GET et HEAD. Le serveur n’a pas effectué l’action demandée.
Son but principal est d’éviter les mises à jour perdues (contrôle de concurrence optimiste). Un client lit une ressource avec son ETag, la modifie et envoie la modification avec If-Match et cet ETag. Si quelqu’un d’autre a modifié la ressource entre-temps, l’ETag ne correspond plus, et le serveur répond 412 au lieu d’écraser l’autre modification. Ce code sert aussi avec If-None-Match: * pour ne créer une ressource que si elle n’existe pas encore.
Pour GET et HEAD, un If-None-Match ou un If-Modified-Since faux produit un 304 Not Modified, et non un 412.
Exemple de réponse
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 et vérification des redirections
Le code 412 apparaît lors d’écritures conditionnelles dans les API et WebDAV, pas lors de l’exploration ; les requêtes GET conditionnelles des robots d’exploration aboutissent à un 304 ou à un 200. Si une vérification des redirections affiche 412, contrôlez les en-têtes If-* que vous avez ajoutés comme en-têtes de requête personnalisés.
Causes fréquentes et cas d’usage
- Une modification a été rejetée parce que la ressource a changé après sa lecture (ETag différent).
If-None-Match: *a empêché l’écrasement d’un fichier existant.- Une API de stockage cloud ou de CDN a reçu une requête conditionnelle avec un ETag périmé.