Ошибка 409 — HTTP-статусы
Что это значит
Код 409 Conflict указывает, что запрос не может быть выполнен из-за конфликта с текущим состоянием целевого ресурса. Сервер обнаружил, что запрос противоречит существующим данным или правилам обработки. Пользователь обычно видит сообщение об ошибке, например, при попытке создать дублирующую запись или изменить ресурс, который был изменён другим клиентом. Этот код часто используется в REST API для предотвращения одновременных изменений.
Вероятные причины
- Попытка создать ресурс, который уже существует (например, дубликат имени пользователя)
- Конфликт версий при одновременном редактировании (например, при использовании optimistic locking)
- Нарушение ограничений целостности данных (например, попытка удалить ресурс, на который есть ссылки)
- Несоответствие состояния ресурса ожиданиям клиента (например, устаревший ETag)
- Попытка выполнить действие, запрещённое текущим статусом ресурса (например, редактирование заблокированного документа)
- Конфликт при синхронизации данных между распределёнными системами
- Ошибка в логике приложения, приводящая к повторной отправке запроса
- Неправильная обработка условных заголовков (If-Match, If-None-Match)
Что делать — по порядку
- Проверьте, не отправляете ли вы повторно тот же запрос (например, из-за таймаута).
- Убедитесь, что ресурс существует и его состояние соответствует ожидаемому.
- Получите актуальное состояние ресурса (GET) и повторите запрос с корректными данными.
- При использовании optimistic locking проверьте и обновите ETag или версию ресурса.
- Исключите дублирование: проверьте уникальность ключевых полей (ID, email и т.д.).
- Проверьте логи сервера на наличие дополнительных деталей о конфликте.
- Если конфликт вызван параллельными запросами, внедрите механизм блокировок или очередей.
- Обратитесь к документации API для уточнения правил обработки конфликтов.
Нажимайте на пункты, чтобы отмечать выполненные.
Частые вопросы
Что означает ошибка 409 Conflict?
Ошибка 409 означает, что запрос конфликтует с текущим состоянием ресурса на сервере. Например, вы пытаетесь создать запись, которая уже существует.
Как исправить ошибку 409?
Получите актуальные данные ресурса (GET), устраните причину конфликта (например, удалите дубликат или обновите версию) и повторите запрос.
В чём разница между 409 и 412?
409 Conflict указывает на конфликт состояния ресурса, а 412 Precondition Failed — на невыполнение предусловий, указанных в заголовках запроса.
Может ли 409 возникнуть из-за кэша?
Нет, 409 не связан с кэшированием. Это ошибка логики приложения или состояния данных.
Как обработать 409 на клиенте?
Показать пользователю сообщение о конфликте, предложить обновить данные и повторить попытку.
Источники
- RFC 7231 - HTTP/1.1 Semantics and Content проверено 28.07.2026
Где встречается
HTTP-статус, определённый в RFC 7231, раздел 6.5.8. Используется в REST API, веб-приложениях, системах управления контентом, базах данных.