412 Precondition Failed означает, что одно или несколько условий в заголовках запроса оказались ложными. Это результат невыполненного If-Match или If-Unmodified-Since либо невыполненного If-None-Match для методов, кроме GET и HEAD. Запрошенное действие сервер не выполнил.
Главное назначение кода — защита от потерянных обновлений (оптимистичное управление параллельным доступом). Клиент читает ресурс вместе с его ETag, редактирует его и отправляет изменение с If-Match и этим ETag. Если кто-то другой за это время изменил ресурс, ETag уже не совпадает, и сервер отвечает 412, а не перезаписывает чужое изменение. Код также используется с If-None-Match: *, чтобы создать ресурс, только если его еще нет.
Для GET и HEAD ложное условие If-None-Match или If-Modified-Since приводит к 304 Not Modified, а не к 412.
Пример ответа
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 и проверка редиректов
Типичные причины и сценарии использования
- Правка отклонена, потому что ресурс изменился после того, как его прочитали (несовпадение ETag).
If-None-Match: *не дал перезаписать существующий файл.- API облачного хранилища или CDN получил условный запрос с устаревшим ETag.