Что это значит
Сервер требует, чтобы запрос был условным (If-Match и т. п.), чтобы избежать потерянных обновлений.
Типичные причины
- PUT или PATCH без If-Match к API с обязательной оптимистичной блокировкой
Как исправить
Если вы клиент или посетитель
Получите ресурс через GET, возьмите его ETag и передайте в If-Match вместе с обновлением.
Если вы владелец сайта или API
Объясните в теле, какой заголовок требуется.
Пример ответа
HTTP/1.1
HTTP/1.1 428 Precondition Required
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json
{
"type": "about:blank",
"title": "Precondition Required",
"status": 428,
"detail": "Send If-Match with the ETag you last read."
} Спецификация
Частые вопросы
› Зачем API требовать If-Match?
Чтобы два клиента незаметно не перезаписали изменения друг друга.
› 428 или 412?
428: предусловие не отправлено. 412: отправлено, но не выполнилось.