DevToolPal
RU
4xx Ошибки клиента

412 Precondition Failed

Условие ложно

Что это значит

Предусловие в заголовках, например 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\"."
}

Спецификация

RFC 9110 §15.5.13

Частые вопросы

› Что такое оптимистичный контроль параллелизма?

Клиенты отправляют If-Match с прочитанным ETag; сервер отклоняет запись с 412, если ресурс за это время изменился.

› 412 или 428?

412: ваше предусловие не выполнилось. 428: предусловие обязательно нужно отправить.