Що це означає
Передумова в заголовках запиту, наприклад If-Match або If-Unmodified-Since, виявилася хибною, тож сервер не застосував запит.
Типові причини
- Хтось інший оновив ресурс (ETag змінився)
- В If-Match використано застарілий кешований ETag
- Умовне завантаження в сховище, де вже є новіший об'єкт
Як виправити
Якщо ви клієнт або відвідувач
Знову виконайте GET ресурсу, щоб отримати поточний ETag, повторно внесіть зміни й надішліть ще раз.
Якщо ви власник сайту чи API
Повертайте поточний ETag і робіть перевірку умов атомарною із записом.
Приклад відповіді
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\"."
} Специфікація
Часті запитання
› Що таке оптимістичне керування паралельністю?
Клієнти надсилають If-Match з прочитаним ETag; сервер відхиляє запис кодом 412, якщо ресурс тим часом змінився.
› 412 чи 428?
412: ваша передумова не виконалася. 428: ви взагалі маєте надіслати передумову.