Co to znaczy
Warunek w nagłówkach żądania, np. If-Match lub If-Unmodified-Since, okazał się fałszywy, więc serwer nie zastosował żądania.
Typowe przyczyny
- Ktoś inny zaktualizował zasób (ETag się zmienił)
- W If-Match użyto nieaktualnego ETagu z pamięci podręcznej
- Warunkowe przesyłanie do magazynu, który ma już nowszy obiekt
Jak naprawić
Jako klient lub odwiedzający
Ponownie wykonaj GET zasobu, aby uzyskać aktualny ETag, nanieś zmiany jeszcze raz i wyślij ponownie.
Jako właściciel strony lub API
Zwracaj bieżący ETag i wykonuj sprawdzenie warunku atomowo z zapisem.
Przykładowa odpowiedź
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\"."
} Specyfikacja
FAQ
› Co to jest optymistyczna kontrola współbieżności?
Klienci wysyłają If-Match z odczytanym ETagiem; serwer odrzuca zapis kodem 412, jeśli zasób w międzyczasie się zmienił.
› 412 czy 428?
412: twój warunek nie został spełniony. 428: musisz w ogóle wysłać warunek.