HTTP 428 Precondition Required при запросе изменения ресурса

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

HTTP 428 Precondition Required означает, что сервер отказывается изменять ресурс без условия, подтверждающего актуальную версию. Обычно необходимо получить ETag ресурса и указать If-Match; это защищает от случайной перезаписи чужих изменений.

В этой статье
  1. Что означает проблема и как её распознать
  2. Основные причины и признаки
  3. Пошаговая диагностика и устранение
  4. Как проверить результат и что делать, если не помогло

#Что означает проблема и как её распознать

HTTP 428 Precondition Required означает, что сервер отказывается изменять ресурс без условия, подтверждающего актуальную версию. Обычно необходимо получить ETag ресурса и указать If-Match; это защищает от случайной перезаписи чужих изменений.

#Основные причины и признаки

Возможная причинаКак узнатьЧто делать
Клиент не передал If-MatchСервер требует условный запрос, но клиент его не отправил.В заголовках PUT/PATCH отсутствует If-Match; ответ 428.Добавить получение версии перед обновлением.
Отправлен неправильный тип условияПриложение использует не подходящий серверу заголовок.428 появляется, хотя клиент считает запрос «условным».Проверить договорённость API и тип ETag.
Прокси удаляет заголовокНа клиенте условие есть, на сервер его не передают.Различается журнал до и после посредника.Проверить конфигурацию прокси без снятия защиты.

#Пошаговая диагностика и устранение

  1. Сохраните данные, которые пытались отправитьЕсли редактор показывает 428, не обновляйте страницу прежде, чем скопируете несохранённый текст в отдельный документ. Статус не означает, что файл испорчен; сервер обычно отклонил изменение, поскольку не выполнено требование к условиям. Не повторяйте запрос в надежде, что вторая попытка пройдёт случайно.
  2. Посмотрите требование сервераОткройте подробности ошибки в клиенте API или в Chrome нажмите F12 → Network → выберите неуспешный запрос → Response и Headers. Часто сервер сообщает, какое условие ему нужно, например If-Match. Сохраните только метод, URL, код и текст требования; исключите токены. Если интерфейс не даёт просматривать HTTP, обратитесь в поддержку приложения с кодом 428.
  3. Получите текущую версию ресурсаВ интерфейсе приложения нажмите «Открыть заново»/«Обновить», предварительно сохранив локальный черновик. Для разработчика выполните документированную безопасную операцию чтения GET и найдите ETag в ответе. Не используйте ETag другого файла, старой копии или соседней среды. При отсутствии ETag уточните у разработчика API допустимый механизм предварительного условия.
  4. Сохраните с корректным условиемЕсли используете готовый редактор с поддержкой версий, повторно примените правки к новой версии и сохраните штатно; заголовки сформирует сам клиент. Разработчик должен передавать If-Match с сильной текущей ETag при изменении конкретного ресурса. Не подставляйте If-Match: * по умолчанию: это проверяет лишь существование объекта, а не совпадение версии. Если после получения ETag виден 412, версия успела измениться — требуется сравнение и объединение.
  5. Проверьте результат на тестовом файлеСоздайте неважный тестовый ресурс и убедитесь, что запрос без условия даёт 428, а с текущим разрешённым условием выполняется. Затем измените ресурс во втором клиенте и проверьте, что устаревшее условие не приводит к незаметной перезаписи. Если требование продолжает нарушаться, сравните заголовки клиента, прокси и сервера и откатите только тестовые изменения.

#Как проверить результат и что делать, если не помогло

Условный запрос проходит при актуальной версии и корректно предотвращает потерю чужих правок при устаревшей. Если сервер продолжает возвращать 428, попросите поддержку сообщить обязательный заголовок и допустимые версии клиента.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.