Ошибка 412: 412 Precondition Failed – HTTP
что это и как исправить ошибку?
Ошибка 412 относится, как к обычному пользователю, так и к вебмастеру. Только, если речь идет о простом пользователе – особо делать нечего, т.к. все зависит от администратора сайта. Разберемся, что означает данная ошибка, когда она возникает и при каких условиях, а также как исправить ошибку 412 Precondition Failed.
Что такое «Ошибка 412 Precondition Failed» и когда она возникает?
Ошибка 412 Precondition Failed (Error 412 Precondition Failed) – это уведомление со стороны HTTP, которое указывает на то, что доступ к ресурсу был отклонен. Ресурсом может быть не только сайт в целом, но и отдельные элементы: изображения, аудио и видео контент, отдельные скрипты или плагины.
Следует отметить, что ошибка 412 Precondition Failed возникает в двух случаях: в клиентском браузере и на стороне администратора сайта. В первом случае, если вы уверены, что сайт должен открываться – следует почистить куки в вашем браузере.
Для администратора сайта: причины ошибки 412
- Ошибка 412 возникает после изменений на сайте, часто изменения глобальные. Для примера, вы решили изменить код сайта, чтобы установить водяные знаки на все изображения в постах сайта. При редактировании поста может возникнуть ошибка 412. Данный случай связан с Windows Live Writer. Система выдает ошибку 412 Precondition Failed – не выполнено предварительное условие.
- При использовании Windows Server 2008 в пакете Standart SP 1 в журнале вы можете обнаружить ошибку 412. Связано это может быть не только с изменениями на самом сайте, но и банально – смена железа. Обновление в SP 2 скорее всего ничего не решит. Что делать и как исправить ошибку 412 вебмастеру читаем в следующем разделе.
- Изменения с помощью плагинов и изменения в теме сайта. При изменении дизайна сайта пакетом через административную панель, например, на WordPress. Т.е. вы приобрели пакет шаблона и попытались установить новую тему. Также и с плагинами. К слову, часто плагин WP Super Cache приводит к возникновению ошибки 412, причем не только на видимой пользователю части, но и в административной. При этом, это результат конфликта между настройками кеширования на самом сервере, и настройками установленного плагина.
Причины ошибки 412 со стороны пользователя
Со стороны пользователя ошибка возникает только в одном случае – сбой в браузере. Скорее всего, почти все сайты, которые вы раньше открывали, перестанут работать. Если проблема только с одним сайтом – это не ваша проблема. Все просто.
Как исправить ошибку
Меньше всего действий нужно предпринимать со стороны пользователя. Именно поэтому, начнем список с решений для обычного пользователя. Кстати, в выдаче Google есть сайт, на котором любая ошибка, даже ошибка 404, лечится чисткой реестра или переустановкой системы Windows. Ребят, это полная чушь. В решении ошибки 412 никаких манипуляций с системой со стороны пользователя делать не стоит.
Исправление ошибки 412 обычному пользователю
Как уже упоминалось выше, если при входе на сайт вы видите ошибку 412, не паникуйте. В первую очередь, пробуйте самое простое – перезапустите ваш браузер. Не помогло? В этом случае нужно почистить куки. Обычно пользователи годами этого не делают. Можно почистить сразу все браузеры с помощью программы CCleaner – программа бесплатная. Просто скачайте, установите и в разделе чистки выполните очистку, пользуясь подсказками.
Как почистить куки без программ, чтобы удалить ошибку 412 в браузере? Перечислим несколько популярных браузеров и пути для поиска функции в программе. Внимание: удаляются все данные сайтов, включая сохраненные пароли (если удалять комплексом куки, историю, автозаполнение и т.д.).
Opera. Нажимаем на иконку Оперы в левом верхнем углу, затем ищем «Настройки». Затем выбираем пункты: Безопасность – Все файлы cookies – выбираем все – нажимаем удалить.
Google Chrome. В новой пустой вкладке нажимаем комбинацию клавиш – Shift+Ctrl+Del. Ставим все галочки, выбираем время «Очистить за все время» и удаляем.
Mozilla Firefox. В правом верхнем углу есть три полоски (нажимаем) и ищем пункт «Настройки». Вы увидите страницу, где в левой колонке нужно выбрать «Приватность и Защита» — нажимаем. Смотрим раздел «Куки и данные сайтов» и нажимаем там «Удалить данные». Подтверждаем – «Удалить».
Что делать администратору сайта?
- В первом случае, который описан выше, попробуйте просто восстановить сайт из резервной копии. Обычно, любой уважающий себя хостинг, делает ежедневные резервные копии. Это можно сделать, если вы сделали много правок на сайте и не знаете, какая именно правка или какие изменения вызвали ошибку. Совет на будущее – сделали правку, проверили сайт. Ошибка 412 Precondition Failed уйдет после восстановления из резервной копии. На всякий случай, восстановить нужно, как сайт, так и БД.
- Если ошибка 412 возникла на системе Windows Server 2008, можно переустановить систему. Но более удачное решение – установить Update Если у вас стоит SP 1, обновление до SP 2 ничего не изменит. Чтобы исправить ошибку 412 также можно просто переустановить систему с нуля. Данные манипуляции следует делать, если вы на 100% уверены, что ошибка не связана с последними изменениями на сайте, которые вы делали.
- В случае обнаружения ошибки 412 на сайте нужно сразу пройти в консоль Google. Проверьте, какие страницы привели первоначально к сбою. Возможно, если ошибка возникла давно, эти страницы выпали из поиска. Это грустно. Придется поработать. Начните с отката изменений, например, удалите последние плагины. Параллельно нужно тестировать сайт на разных устройствах.
Вообще, ошибка 412 у вебмастера возникает ввиду не аккуратного редактирования кода, поэтому всегда делайте резервную копию перед любыми правками. Если остались вопросы – напишите в комментариях, отвечаю быстро. До связи.
412 Предупреждение Ошибка Код ответа ошибки клиента HyperText Transfer Protocol (HTTP)412 Precondition Failed указывает на то,что доступ к целевому ресурсу был запрещен.
Протокол передачи гипертекста (HTTP) 412 Precondition Failed
client error response code указывает, что доступ к целевому ресурсу был запрещен. Это происходит с условными запросами к методам, отличным от GET
или HEAD
, когда условие, определенное заголовками If-Unmodified-Since
или If-None-Match
, не выполняется. В этом случае запрос, обычно загрузка или изменение ресурса, не может быть выполнен, и этот ответ об ошибке отправляется обратно.
Status
412 Precondition Failed
Examples
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4" ETag: W/"0815"
Предотвращение столкновений в воздухе
С помощью ETag
и If-Match
вы можете обнаруживать конфликты редактирования в воздухе.
Например, при редактировании MDN текущий контент вики хешируется и помещается в Etag
в ответе:
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
При сохранении изменений на вики-странице (данные публикации) запрос POST
будет содержать заголовок If-Match
, содержащий значения ETag
, по которым выполняется проверка актуальности .
If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Если хэши не совпадают, это означает, что документ был отредактирован между ними, и Precondition Failed
ошибка 412
Precondition Failed .
Specifications
Specification |
---|
HTTP-семантика # status.412 |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
412 | Yes | 12 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Приведенная ниже информация была взята из GitHub MDN ( https://github. com/mdn/browser-compat-data ).
See also
304
If-Unmodified-Since
If-None-Match
428
HTTP
-
410 Gone
Код ответа ошибки клиента HyperText Transfer Protocol (HTTP)410 Gone указывает,что доступ к целевому ресурсу больше не доступен серверу происхождения и
-
411 Требуемая длина
Код ошибки ответа клиента HyperText Transfer Protocol (HTTP)411 Length Required указывает,что сервер отказывается принимать запрос без определенной Content-Length.
-
413 Слишком большая грузоподъемность
Код состояния ответа HTTP 413 Payload Too Large указывает на то,что объект запроса превышает пределы,определенные сервером;возможно закрытие соединения или возврат Retry-After
-
414 УРТ слишком длинный
Код состояния ответа HTTP 414 URI Too Long указывает на то,что запрос клиента длиннее,чем сервер готов интерпретировать.
- 1
- …
- 379
- 380
- 381
- 382
- 383
- …
- 405
- Next
остальных — Когда уместно ответить с ошибкой HTTP 412?
спросил
Изменено 1 год, 11 месяцев назад
Просмотрено 118 тысяч раз
Мне непонятно, когда следует и не следует возвращать HTTP 412: Precondition Failed, ошибка веб-службы? Я думаю использовать его при проверке данных. Например, если в клиентских данных POST XML и в этих данных отсутствует обязательный элемент данных, то в ответ возвращается код 412 и описание ошибки.
Соответствует ли это духу ответа с помощью HTTP 412 или следует использовать что-то еще (например, другой код ошибки http или исключение веб-приложения)?
- остальные
- веб-сервисы
- http
- http-коды состояния
- http-код состояния-412
2
Если вы посмотрите RFC 2616, вы увидите ряд заголовков запроса, которые можно использовать для применения условий к запросу:
Если-совпадение Если-Изменено-С Если-нет-совпадения Если-диапазон Если-без изменений-с
Эти заголовки содержат «предварительные условия», позволяющие клиенту сообщить серверу, что запрос должен выполняться только при соблюдении определенных условий. Например, вы используете запрос PUT
для обновления состояния ресурса, но вы хотите, чтобы действие PUT
выполнялось только в том случае, если ресурс не был изменен кем-либо еще с момента вашего последнего GET
.
Код состояния ответа 412
(сбой предварительного условия) обычно используется, когда эти предварительные условия не выполняются.
Ваш пример звучит как недопустимый запрос (т. е. клиент отправил данные, которые недействительны из-за отсутствующих значений). Код состояния 400
(неверный запрос) здесь более уместен, IMO.
1
412 зарезервирован для случаев, когда запрос является условным, а условие не выполняется.
Для вашего варианта использования хорошо подходит 422 Unprocessable Entity.
4
Лучше всего избегать 412. На практике большинство веб-сервисов, которые я использовал, отправляют код 400 (неверный запрос). Многие фреймворки также имеют встроенную поддержку 400, и ваши клиенты оценят более распространенный код ошибки. Часто, особенно с интерфейсами REST, возвращается простой элемент «сообщение» или «ошибка» с описанием.
3
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
API — код состояния HTTP 400 против 412
спросил
Изменено 9 лет, 11 месяцев назад
Просмотрено 30 тысяч раз
Итак, я разрабатываю Rest API
Когда выполняется POST для создания ресурса, а обязательное поле отсутствует, что я должен вернуть?
400 – Неверный запрос
ИЛИ
412 – Ошибка предварительного условия
И почему?
- API
- http
- остальные
- http-код состояния-400
- http-код состояния-412
1
Используйте 400, если параметры запроса неверны. Используйте 412, если один из If-*
запрос заголовки вроде If-Match
, If-Modified-Since
и т. д. неверны.
Почему? Это именно то, что говорит RFC. См., например, этот отрывок из спецификации If-Match
:
Если ни один из тегов сущностей не совпадает, или если указано «*», а текущей сущности не существует, сервер НЕ ДОЛЖЕН выполнять запрошенный метод и ДОЛЖЕН возвращать ответ 412 (ошибка предварительного условия). Это поведение наиболее полезно, когда клиент хочет запретить методу обновления, такому как PUT, модифицировать ресурс, который изменился с момента его последнего извлечения клиентом.
2
412 используется, когда ваш сервер не соответствует условию, указанному клиентом.
В вашем случае вы должны использовать 400. Это просто плохой запрос.
См. эту ссылку для некоторых объяснений заголовков предварительных условий.