Что означает HTTP статус-код 412?

«Что означает HTTP статус-код 412?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP 412 Precondition Failed означает, что сервер не выполнил одно или несколько условий, указанных клиентом в условных заголовках запроса.

Применение: Используется для оптимистичной блокировки и предотвращения конфликтов при обновлении ресурсов (например, по механизму ETag).

Пример:

  1. Клиент получает ресурс, и в ответе приходит заголовок ETag: "abc123".
  2. Для его обновления клиент отправляет запрос:

    PUT /api/resource/1 HTTP/1.1
    If-Match: "abc123"
    Content-Type: application/json
    
    {"data": "new value"}
  3. Если за это время другой клиент уже изменил ресурс и его ETag стал "def456", сервер вернет:
    HTTP/1.1 412 Precondition Failed

Распространенные условные заголовки: If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since.