Содержание

Error 400 bad request как исправить

Ошибка 400 ( Bad Request) – это код ответа HTTP , который означает, что сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса. Подобные коды ответа HTTP отражают сложные взаимоотношения между клиентом, веб-приложением, сервером, а также зачастую сразу несколькими сторонними веб-сервисами. Из-за этого поиск причины появления ошибки может быть затруднён даже внутри контролируемой среды разработки.

В этой статье мы разберём, что значит ошибка 400 Bad Request ( переводится как « Неверный запрос »), и как ее исправить

На стороне сервера или на стороне клиента?

Все коды ответа HTTP из категории 4xx считаются ошибками на стороне клиента. Несмотря на это, появление ошибки 4xx не обязательно означает, что проблема как-то связана с клиентом, под которым понимается веб-браузер или устройство, используемое для доступа к приложению. Зачастую, если вы пытаетесь диагностировать проблему со своим приложением, можно сразу игнорировать большую часть клиентского кода и компонентов, таких как HTML , каскадные таблицы стилей ( CSS ), клиентский код JavaScript и т. п. Это также применимо не только к сайтам. Многие приложения для смартфонов, которые имеют современный пользовательский интерфейс, представляют собой веб-приложения.

С другой стороны, ошибка 400 Bad Request означает, что запрос, присланный клиентом, был неверным по той или иной причине. Пользовательский клиент может попытаться загрузить слишком большой файл, запрос может быть неверно сформирован, заголовки HTTP запроса могут быть неверными и так далее.

Мы рассмотрим некоторые из этих сценариев ( и потенциальные решения ) ниже. Но имейте в виду: мы не можем однозначно исключить ни клиент, ни сервер в качестве источника проблемы. В этих случаях сервер является сетевым объектом, генерирующим ошибку 400 Bad Request и возвращающим её как код ответа HTTP клиенту, но возможно именно клиент ответственен за возникновение проблемы.

Начните с тщательного резервного копирования приложения

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

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

Диагностика ошибки 400 Bad Request

Ошибка 400 Bad Request означает, что сервер ( удалённый компьютер ) не может обработать запрос, отправленный клиентом ( браузером ), вследствие проблемы, которая трактуется сервером как проблема на стороне клиента.

Существует множество сценариев, в которых ошибка 400 Bad Request может появляться в приложении. Ниже представлены некоторые наиболее вероятные случаи:

  • Клиент случайно ( или намеренно ) отправляет информацию, перехватываемую маршрутизатором ложных запросов. Некоторые веб-приложения ищут особые заголовки HTTP , чтобы обрабатывать запросы и удостовериться в том, что клиент не предпринимает ничего зловредного. Если ожидаемый заголовок HTTP не найден или неверен, то ошибка 400 Bad Request – возможный результат.
  • Клиент может загружать слишком большой файл. Большинство серверов или приложений имеют лимит на размер загружаемого файла, Это предотвращает засорение канала и других ресурсов сервера. Во многих случаях сервер выдаст ошибку 400 Bad Request , когда файл слишком большой и поэтому запрос не может быть выполнен.
  • Клиент запрашивает неверный URL . Если клиент посылает запрос к неверному URL ( неверно составленному ), это может привести к возникновению ошибки 400 Bad Request .
  • Клиент использует недействительные или устаревшие куки. Это возможно, так как локальные куки в браузере являются идентификатором сессии. Если токен конкретной сессии совпадает с токеном запроса от другого клиента, то сервер/приложение может интерпретировать это как злонамеренный акт и выдать код ошибки 400 Bad Request .

Исправление проблем на стороне клиента

Ошибку 400 Bad Request ( попробуйте позже ) лучше начать с исправления на стороне клиента. Вот несколько советов, что следует попробовать в браузере или на устройстве, которые выдают ошибку.

Проверьте запрошенный URL

Наиболее частой причиной ошибки 400 Bad Request является банальный ввод некорректного URL . Доменные имена ( например, internet-technologies.ru ) нечувствительны к регистру, поэтому ссылка, написанная в смешанном регистре, такая как interNET-technologies.RU работает так же, как и нормальная версия в нижнем регистре internet-technologies.ru. Но части URL , которые расположены после доменного имени, чувствительными к регистру. Кроме случаев, когда приложение/сервер специально осуществляет предварительную обработку всех URL и переводит их в нижний регистр перед исполнением запроса.

Важно проверять URL на неподходящие специальные символы, которых в нем не должно быть. Если сервер получает некорректный URL , он выдаст ответ в виде ошибки 400 Bad Request .

Очистите соответствующие куки

Одной из потенциальных причин возникновения ошибки 400 Bad Request являются некорректные или дублирующие локальные куки. Файлы куки в HTTP – это небольшие фрагменты данных, хранящиеся на локальном устройстве, которые используются сайтами и веб-приложениями для « запоминания » конкретного браузера или устройства. Большинство современных веб-приложений использует куки для хранения данных, специфичных для браузера или пользователя, идентифицируя клиента и позволяя делать следующие визиты быстрее и проще.

Но куки, хранящие информацию сессии о вашем аккаунте или устройстве, могут конфликтовать с другим токеном сессии от другого пользователя, выдавая кому-то из вас ( или вам обоим ) ошибку 400 Bad Request .

В большинстве случаев достаточно рассматривать только ваше приложение в отношении файлов куки, которые относятся к сайту или веб-приложению, выдающему ошибку 400 Bad Request .

Куки хранятся по принципу доменного имени веб-приложения, поэтому можно удалить только те куки, которые соответствуют домену сайта, сохранив остальные куки не тронутыми. Но если вы не знакомы с ручным удалением определённых файлов куки, гораздо проще и безопаснее очистить сразу все файлы куки.

Это можно сделать разными способами в зависимости от браузера, который вы используете:

  • Google Chrome;
  • Internet Explorer;
  • Microsoft Edge;
  • Mozilla Firefox;
  • Safari.
Загрузка файла меньшего размера

Если вы получаете ошибку 400 Bad Request при загрузке какого-либо файла, попробуйте корректность работы на меньшем по размеру файле, Это включает в себя и «загрузки» файлов, которые не загружаются с вашего локального компьютера. Даже файлы, отправленные с других компьютеров, считаются «загрузками» с точки зрения веб-сервера, на котором работает ваше приложение.

Выйдите и войдите

Попробуйте выйти из системы и войти обратно. Если вы недавно очистили файлы куки в браузере, это приводит к автоматическому выходу из системы при следующей загрузке страницы. Попробуйте просто войти обратно, чтобы посмотреть, заработала ли система корректно.

Также приложение может столкнуться с проблемой, связанной с вашей предыдущей сессией, являющейся лишь строкой, которую сервер посылает клиенту, чтобы идентифицировать клиента при будущих запросах. Как и в случае с другими данными, токен сессии ( или строка сессии ) хранится локально на вашем устройстве в файлах куки и передаётся клиентом на сервер при каждом запросе. Если сервер решает, что токен сессии некорректен или скомпрометирован, вы можете получить ошибку 400 Bad Request .

В большинстве веб-приложений выход повторный вход приводит к перегенерации локального токена сессии.

Отладка на распространённых платформах

Если вы используете на сервере распространённые пакеты программ, которые выдают ошибку 400 Bad Request , изучите стабильность и функциональность этих платформ. Наиболее распространённые системы управления контентом, такие как WordPress , Joomla! и Drupal , хорошо протестированы в своих базовых версиях. Но как только вы начинаете изменять используемые ими расширения PHP , очень легко спровоцировать непредвиденные проблемы, которые выльются в ошибку 400 Bad Request .

Откатите последние изменения

Если вы обновили систему управления контентом непосредственно перед появлением ошибки 400 Bad Request , рассмотрите возможность отката к предыдущей версии, которая была установлена, как самый быстрый и простой способ убрать ошибку 400 bad request .

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

Но в некоторых случаях CMS не предоставляют возможности отката к предыдущим версиям. Так обычно происходит с популярными платформами, поэтому не бойтесь, если вы не можете найти простой способ вернуться к использованию старой версии той или иной программной платформы.

Удалите новые расширения, модули или плагины

В зависимости от конкретной CMS , которую использует приложение, имена этих компонентов будут различаться. Но во всех системах они служат одной и той же цели: улучшение возможностей платформы относительно её стандартной функциональности.

При этом имейте в виду, что расширения могут так или иначе получать полный контроль над системой, вносить изменения в код PHP , HTML , CSS , JavaScript или базу данных. Поэтому мудрым решением может быть удаление любых новых расширений, которые были недавно добавлены.

Проверьте непреднамеренные изменения в базе данных

Даже если удалили расширение через панель управления CMS , это не гарантирует, что внесенные им изменения были полностью отменены. Это касается многих расширений WordPress , которым предоставляется полный доступ к базе данных.

Расширение может изменить записи в базе данных, которые «не принадлежат» ему, а созданы и управляются другими расширениями ( или даже самой CMS ). В подобных случаях модуль может не знать, как откатить назад изменения, внесенные в записи базы данных.

Я лично сталкивался с такими случаями несколько раз. Поэтому лучшим путём будет открыть базу данных и вручную просмотреть таблицы и записи, которые могли быть изменены расширением.

Поиск проблем на стороне сервера

Если вы уверены, что ошибка 400 Bad Request не связана с CMS , вот некоторые дополнительные советы, которые могут помочь найти проблему на стороне сервера.

Проверка на неверные заголовки HTTP

Ошибка, которую вы получаете от приложения, является результатом недостающих или некорректных специальных заголовков HTTP , которые ожидает получить приложение или сервер. В подобных случаях нужно проанализировать заголовки HTTP , которые отправляются на сторону сервера.

Просмотрите логи

Почти любое веб-приложение будет вести логи на стороне сервера. Они представляют собой историю того, что делало приложение. Например, какие страницы были запрошены, к каким серверам оно обращалось, какие результаты предоставлялись из базы данных и т.п.

Логи сервера относятся к оборудованию, на котором выполняется приложение, и зачастую представляют собой детали о статусе подключённых сервисов или даже о самом сервере. Поищите в интернете “ логи [ИМЯ_ПЛАТФОРМЫ] ”, если вы используете CMS , или “ логи [ЯЗЫК_ПРОГРАММИРОВАНИЯ] ” и “ логи [ОПЕРАЦИОННАЯ_СИСТЕМА] ”, если у вас собственное приложение, чтобы получить подробную информацию по поиску логов.

Отладьте код приложения или скриптов

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

Создайте копию всего приложения на локальном устройстве для разработки и пошагово повторите тот сценарий, который приводил к возникновению ошибки 400 Bad Request . А затем просмотрите код приложения в тот момент, когда что-то пойдёт не так.

Независимо от причины возникновения ошибки, даже если вам удалось исправить её в этот раз, появление в вашем приложении такой проблемы — это сигнал для того, чтобы внедрить инструмент обработки ошибок, который поможет автоматически обнаруживать их и оповещать в момент возникновения.

Данная публикация представляет собой перевод статьи « 400 Bad Request Error What It Is and How to Fix It » , подготовленной дружной командой проекта Интернет-технологии.ру

О шибка 400 Bad Request возникает, когда запрос, отправленный на сервер сайта, является неправильным или поврежденным, и с

Список кодов состояния HTTP — List of HTTP status codes

Коды ответа протокола передачи гипертекста

Это список кодов состояния ответа протокола передачи гипертекста (HTTP). Коды состояния выдаются сервером в ответ на запрос клиента к серверу. Он включает коды из запроса комментариев IETF (RFC), другие спецификации и некоторые дополнительные коды, используемые в некоторых распространенных приложениях HTTP. Первая цифра кода состояния указывает один из пяти стандартных классов ответов. Показанные фразы сообщений являются типичными, но может быть предоставлена ​​любая удобочитаемая альтернатива. Если не указано иное, код состояния является частью стандарта HTTP / 1.1 (RFC 7231).

Служба присвоения номеров Интернета (IANA) ведет официальный реестр кодов состояния HTTP.

Все коды состояния ответа HTTP разделены на пять классов или категорий. Первая цифра кода состояния определяет класс ответа, а последние две цифры не имеют никакой роли классификации или категоризации. Стандарт определяет пять классов:

  • Информационный ответ 1xx — запрос получен, процесс продолжается
  • 2xx успешно — запрос был успешно получен, понят и принят
  • Перенаправление 3xx — необходимо предпринять дальнейшие действия для выполнения запроса
  • Ошибка клиента 4xx — запрос содержит неверный синтаксис или не может быть выполнен
  • Ошибка сервера 5xx — серверу не удалось выполнить явно действительный запрос

1xx информационный ответ

Информационный ответ означает, что запрос был получен и понят. Он выдается временно, пока продолжается обработка запроса. Он предупреждает клиента, чтобы он дождался окончательного ответа. Сообщение состоит только из строки состояния и необязательных полей заголовка и заканчивается пустой строкой. Поскольку в стандарте HTTP / 1.0 не определены коды состояния 1xx, серверы не должны отправлять ответ 1xx клиенту, совместимому с HTTP / 1.0, за исключением экспериментальных условий.

100 Продолжить
Сервер получил заголовки запроса, и клиент должен перейти к отправке тела запроса (в случае запроса, для которого необходимо отправить тело; например, запрос POST ). Отправка большого тела запроса на сервер после того, как запрос был отклонен из-за несоответствующих заголовков, будет неэффективен. Чтобы сервер проверил заголовки запроса, клиент должен отправить Expect: 100-continueв качестве заголовка в своем начальном запросе и получить 100 Continueкод состояния в ответ перед отправкой тела. Если клиент получает код ошибки, такой как 403 (Запрещено) или 405 (Метод не разрешен), он не должен отправлять тело запроса. Ответ 417 Expectation Failedуказывает, что запрос следует повторить без Expectзаголовка, поскольку он указывает, что сервер не поддерживает ожидания (это, например, случай с серверами HTTP / 1.0).
101 протокол переключения
Запрашивающая сторона попросила сервер переключить протоколы, и сервер дал согласие на это.
102 Обработка ( WebDAV ; RFC 2518 )
Запрос WebDAV может содержать множество подзапросов, связанных с файловыми операциями, для выполнения которых требуется много времени. Этот код указывает на то, что сервер получил и обрабатывает запрос, но ответа пока нет. Это предотвращает тайм-аут клиента и предположение, что запрос был потерян.
103 Ранние подсказки ( RFC 8297 )
Используется для возврата некоторых заголовков ответа перед окончательным HTTP-сообщением.

2хх успех

Этот класс кодов состояния указывает, что действие, запрошенное клиентом, было получено, понято и принято.

200 ОК
Стандартный ответ на успешные HTTP-запросы. Фактический ответ будет зависеть от используемого метода запроса. В запросе GET ответ будет содержать объект, соответствующий запрошенному ресурсу. В запросе POST ответ будет содержать объект, описывающий или содержащий результат действия.
201 Создано
Запрос был выполнен, в результате чего был создан новый ресурс.
202 Принято
Запрос принят в обработку, но обработка не завершена. Запрос может или не может быть в конечном итоге обработан, и может быть отклонен, когда происходит обработка.
203 Неавторизованная информация (начиная с HTTP / 1.1)
Сервер — это прокси-сервер преобразования (например, веб-ускоритель ), который получил 200 OK от своего источника, но возвращает измененную версию ответа источника.
204 Нет содержимого
Сервер успешно обработал запрос и не возвращает никакого контента.
205 Сбросить содержимое
Сервер успешно обработал запрос, просит, чтобы инициатор запроса сбросил представление документа, и не возвращает никакого содержимого.
206 Частичное содержимое ( RFC 7233 )
Сервер доставляет только часть ресурса ( обслуживание байтов ) из-за заголовка диапазона, отправленного клиентом. Заголовок диапазона используется HTTP-клиентами для возобновления прерванных загрузок или разделения загрузки на несколько одновременных потоков.
207 Мульти-статус (WebDAV; RFC 4918 )
Нижеследующее тело сообщения по умолчанию является XML- сообщением и может содержать несколько отдельных кодов ответа, в зависимости от того, сколько подзапросов было сделано.
208 уже сообщено (WebDAV; RFC 5842 )
Члены привязки DAV уже были перечислены в предыдущей части (мультистатусного) ответа и не включаются снова.
226 IM используется ( RFC 3229 )
Сервер выполнил запрос ресурса, и ответ является представлением результата одной или нескольких манипуляций с экземпляром, примененных к текущему экземпляру.

Перенаправление 3xx

Этот класс кода состояния указывает, что клиент должен предпринять дополнительные действия для выполнения запроса. Многие из этих кодов состояния используются при перенаправлении URL-адресов .

Пользовательский агент может выполнять дополнительное действие без взаимодействия с пользователем, только если во втором запросе используется метод GET или HEAD. Пользовательский агент может автоматически перенаправить запрос. Пользовательский агент должен обнаруживать и вмешиваться, чтобы предотвратить циклические перенаправления.

300 вариантов выбора
Указывает несколько вариантов ресурса, из которых может выбрать клиент (посредством согласования содержимого, управляемого агентом ). Например, этот код можно использовать для представления нескольких параметров формата видео, для перечисления файлов с разными расширениями файлов или для устранения неоднозначности в словах .
301 перемещен навсегда
Этот и все будущие запросы должны быть направлены на указанный URI .
302 найдено (ранее «перемещено временно»)
Сообщает клиенту, что нужно посмотреть (перейти) на другой URL. 302 был заменен 303 и 307. Это пример отраслевой практики, противоречащей стандарту. Спецификация HTTP / 1.0 (RFC 1945) требовала от клиента выполнения временного перенаправления (исходная описывающая фраза была «Перемещено временно»), но популярные браузеры реализовали 302 с функциональностью 303 См. Другое. Поэтому в HTTP / 1.1 добавлены коды состояния 303 и 307, чтобы различать два поведения. Однако некоторые веб-приложения и платформы используют код состояния 302, как если бы это был 303.
303 См. Другое (начиная с HTTP / 1.1)
Ответ на запрос можно найти под другим URI с помощью метода GET. При получении в ответ на POST (или PUT / DELETE) клиент должен предполагать, что сервер получил данные, и должен отправить новый запрос GET на данный URI.
304 Не изменено ( RFC 7232 )
Указывает, что ресурс не был изменен с версии, указанной в заголовках запроса If-Modified-Since или If-None-Match. В таком случае нет необходимости повторно передавать ресурс, поскольку у клиента все еще есть ранее загруженная копия.
305 Использовать прокси (начиная с HTTP / 1.1)
Запрошенный ресурс доступен только через прокси, адрес которого указан в ответе. По соображениям безопасности многие клиенты HTTP (например, Mozilla Firefox и Internet Explorer ) не подчиняются этому коду состояния.
306 Переключить прокси
Больше не используется. Первоначально означало «Последующие запросы должны использовать указанный прокси».
307 Временное перенаправление (начиная с HTTP / 1.1)
В этом случае запрос следует повторить с другим URI; однако в будущих запросах должен по-прежнему использоваться исходный URI. В отличие от того, как 302 был исторически реализован, метод запроса не может быть изменен при повторной выдаче исходного запроса. Например, запрос POST следует повторить, используя другой запрос POST.
308 постоянное перенаправление ( RFC 7538 )
Запрос и все будущие запросы следует повторить, используя другой URI. 307 и 308 аналогичны поведению 302 и 301, но не позволяют изменять метод HTTP . Так, например, отправка формы на постоянно перенаправляемый ресурс может продолжаться гладко.

4хх клиентских ошибок

Ошибка 404 в Википедии

Этот класс кода состояния предназначен для ситуаций, в которых кажется, что ошибка была вызвана клиентом. За исключением ответа на запрос HEAD, сервер должен включать объект, содержащий объяснение ситуации с ошибкой и того, является ли это временным или постоянным состоянием. Эти коды состояния применимы к любому методу запроса. Пользовательские агенты должны отображать пользователю любую включенную сущность.

ошибка 400, неверный запрос
Сервер не может или не будет обрабатывать запрос из-за очевидной ошибки клиента (например, неверный синтаксис запроса, слишком большой размер, недопустимое формирование сообщения запроса или обманчивая маршрутизация запроса).
401 неавторизованный ( RFC 7235 )
Аналогичен 403 Forbidden , но специально для использования, когда аутентификация требуется, но она не удалась или еще не была предоставлена. Ответ должен включать поле заголовка WWW-Authenticate, содержащее запрос, применимый к запрошенному ресурсу. См. Разделы Аутентификация обычного доступа и Дайджест-аутентификация доступа . 401 семантически означает «неавторизованный», пользователь не имеет действительных учетных данных для аутентификации для целевого ресурса.
Примечание. Некоторые сайты неправильно выдают HTTP 401, когда IP-адрес запрещен для доступа к веб-сайту (обычно это домен веб-сайта) и этому конкретному адресу отказано в разрешении на доступ к веб-сайту.
402 Требуется оплата
Зарезервировано для использования в будущем. Первоначальное намерение заключалось в том, чтобы этот код можно было использовать как часть какой-либо формы цифровых денег или схемы микроплатежей , как это было предложено, например, GNU Taler , но этого еще не произошло, и этот код широко не используется. Google Developers API использует этот статус, если конкретный разработчик превысил дневной лимит запросов. Sipgate использует этот код, если на счете недостаточно средств для начала звонка. Shopify использует этот код, когда магазин не выплатил комиссию и временно отключен. Stripe использует этот код для неудачных платежей с правильными параметрами, например заблокированных мошеннических платежей.
403 Запрещено
Запрос содержал действительные данные и был понят сервером, но сервер отклоняет действие. Это может быть связано с тем, что у пользователя нет необходимых разрешений для ресурса, или ему нужна учетная запись какого-либо типа, или он пытается выполнить запрещенное действие (например, создает дублирующую запись, где разрешена только одна). Этот код также обычно используется, если запрос предоставил аутентификацию путем ответа на запрос поля заголовка WWW-Authenticate, но сервер не принял эту аутентификацию. Запрос не должен повторяться.
404 Не Найдено
Запрошенный ресурс не может быть найден, но может быть доступен в будущем. Последующие запросы клиента допустимы.
405 Метод не разрешен
Метод запроса не поддерживается для запрошенного ресурса; например, запрос GET в форме, которая требует, чтобы данные были представлены через POST , или запрос PUT на ресурсе только для чтения.
406 неприемлемо
Запрошенный ресурс может генерировать только контент, неприемлемый в соответствии с заголовками Accept, отправленными в запросе. См. Согласование содержания .
407 Требуется проверка подлинности прокси ( RFC 7235 )
Клиент должен сначала аутентифицироваться с помощью прокси .
408 Тайм-аут запроса
Время ожидания запроса на сервере истекло. Согласно спецификациям HTTP: «Клиент не отправил запрос в течение времени, в течение которого сервер был подготовлен к ожиданию. Клиент МОЖЕТ повторить запрос без изменений в любое время».
409 Конфликт
Указывает, что запрос не может быть обработан из-за конфликта в текущем состоянии ресурса, такого как конфликт редактирования между несколькими одновременными обновлениями.
410 ушел
Указывает, что запрошенный ресурс больше не доступен и больше не будет доступен. Это следует использовать, когда ресурс был намеренно удален, и ресурс должен быть очищен. После получения кода состояния 410 клиент не должен запрашивать ресурс в будущем. Такие клиенты, как поисковые системы, должны удалить ресурс из своих индексов. В большинстве случаев не требуется, чтобы клиенты и поисковые системы очищали ресурс, и вместо этого можно использовать сообщение «404 Not Found».
411 Требуется длина
В запросе не указана длина его содержимого, необходимая для запрашиваемого ресурса.
412 Ошибка предварительного условия ( RFC 7232 )
Сервер не соответствует одному из предварительных условий, которые запрашивающая сторона поставила в полях заголовка запроса.
413 Payload Too Large ( RFC 7231 ).
Запрос больше, чем сервер хочет или может обработать. Ранее назывался «Слишком большой объект запроса».
414 URI слишком длинный ( RFC 7231 )
Предоставленный URI слишком длинный для обработки сервером. Часто это результат того, что слишком много данных кодируется как строка запроса запроса GET, и в этом случае его следует преобразовать в запрос POST. Ранее вызывался «Request-URI Too Long».
415 Неподдерживаемый тип носителя ( RFC 7231 )
Объект запроса имеет тип носителя, который сервер или ресурс не поддерживает. Например, клиент загружает изображение как image / svg + xml , но сервер требует, чтобы изображения использовали другой формат.
416 Диапазон не соответствует требованиям ( RFC 7233 )
Клиент запросил часть файла ( обслуживание байтов ), но сервер не может предоставить эту часть. Например, если клиент запросил часть файла, лежащую за концом файла. Ранее назывался «Запрошенный диапазон не удовлетворяется».
417 Ожидание не выполнено
Сервер не может соответствовать требованиям поля заголовка запроса Expect.
418 Я чайник ( RFC 2324 , RFC 7168 )
Этот код был определен в 1998 году как одна из традиционных шуток IETF первоапрельских шуток в RFC 2324 , Hyper Text Coffee Pot Control Protocol , и не ожидается, что он будет реализован на реальных HTTP-серверах. RFC указывает, что этот код должен возвращаться чайниками, которых просят заваривать кофе. Этот HTTP-статус используется в качестве пасхального яйца на некоторых веб-сайтах, например на Google.com « Я — пасхальное яйцо для чайника» .
421 неправильно направленный запрос ( RFC 7540 )
Запрос был направлен на сервер, который не может дать ответ (например, из-за повторного использования соединения).
422 Unprocessable Entity (WebDAV; RFC 4918 ).
Запрос был правильно сформирован, но его не удалось выполнить из-за семантических ошибок.
423 заблокировано (WebDAV; RFC 4918 )
Ресурс, к которому осуществляется доступ, заблокирован.
424 Неудачная зависимость (WebDAV; RFC 4918 )
Запрос не удался, потому что он зависел от другого запроса, и этот запрос не удался (например, PROPPATCH).
425 Слишком рано ( RFC 8470 )
Указывает, что сервер не желает рисковать обработкой запроса, который может быть воспроизведен.
426 Требуется обновление
Клиент должен переключиться на другой протокол, например TLS / 1.0 , указанный в поле заголовка Upgrade .
428 Требуется предварительное условие ( RFC 6585 )
Исходный сервер требует, чтобы запрос был условным. Предназначен для предотвращения проблемы «потерянного обновления», когда клиент ПОЛУЧАЕТ состояние ресурса, изменяет его и отправляет обратно на сервер, когда тем временем третья сторона изменила состояние на сервере, что привело к конфликту.
429 Слишком много запросов ( RFC 6585 )
Пользователь отправил слишком много запросов за заданный промежуток времени. Предназначен для использования со схемами ограничения скорости .
431 Слишком большие поля заголовка запроса ( RFC 6585 )
Сервер не желает обрабатывать запрос, потому что либо отдельное поле заголовка, либо все поля заголовка в совокупности слишком велики.
451 недоступен по юридическим причинам ( RFC 7725 )
Оператор сервера получил законное требование запретить доступ к ресурсу или набору ресурсов, который включает запрошенный ресурс. Код 451 был выбран как ссылка на роман « 451 градус по Фаренгейту» (см. «Благодарности» в RFC).

5xx ошибки сервера

Сервер не смог выполнить запрос.

Коды состояния ответа, начинающиеся с цифры «5», указывают на случаи, когда сервер знает, что он обнаружил ошибку или иным образом не может выполнить запрос. За исключением ответа на запрос HEAD, сервер должен включать объект, содержащий объяснение ситуации с ошибкой, и указывать, является ли это временным или постоянным состоянием. Точно так же пользовательские агенты должны отображать пользователю любую включенную сущность. Эти коды ответа применимы к любому методу запроса.

внутренняя ошибка сервера 500
Общее сообщение об ошибке, которое выдается, когда возникла непредвиденная ситуация, и более конкретное сообщение не подходит.
501 Не реализовано
Сервер либо не распознает метод запроса, либо не может выполнить запрос. Обычно это подразумевает доступность в будущем (например, новую функцию API веб-службы).
502 Неверный шлюз
Сервер действовал как шлюз или прокси и получил недопустимый ответ от вышестоящего сервера.
сервис 503 недоступен
Сервер не может обработать запрос (потому что он перегружен или отключен для обслуживания). Как правило, это временное состояние.
Ошибка 504 Время ответа сервера истекло
Сервер действовал как шлюз или прокси и не получил своевременного ответа от вышестоящего сервера.
505 Версия HTTP не поддерживается
Сервер не поддерживает версию протокола HTTP, используемую в запросе.
506 вариант также согласовывается ( RFC 2295 )
Прозрачное согласование содержимого для запроса приводит к циклической ссылке .
507 Недостаточно места для хранения (WebDAV; RFC 4918 )
Сервер не может сохранить представление, необходимое для выполнения запроса.
Обнаружен цикл 508 (WebDAV; RFC 5842 )
Сервер обнаружил бесконечный цикл при обработке запроса (отправлено вместо 208 Already Reported ).
510 не расширенный ( RFC 2774 )
Для его выполнения сервером требуются дальнейшие расширения запроса.
511 Требуется сетевая аутентификация ( RFC 6585 )
Чтобы получить доступ к сети, клиенту необходимо пройти аутентификацию. Предназначен для использования путем перехвата прокси-серверов, используемых для управления доступом к сети (например, «перехватывающие порталы », используемые для запроса согласия с Условиями обслуживания перед предоставлением полного доступа в Интернет через точку доступа Wi-Fi ).

Неофициальные коды

Следующие ниже коды не определены никаким стандартом.

103 КПП
Используется в предложении возобновляемых запросов для возобновления прерванных запросов PUT или POST.
218 Это нормально ( веб-сервер Apache )
Используется как условие универсальной ошибки, позволяющее передавать тела ответов через Apache, когда включен ProxyErrorOverride. Когда ProxyErrorOverride включен в Apache, тела ответов, содержащие код состояния 4xx или 5xx, автоматически отклоняются Apache в пользу общего ответа или настраиваемого ответа, указанного в директиве ErrorDocument.
419 Страница истекла ( Laravel Framework )
Используется Laravel Framework, когда токен CSRF отсутствует или просрочен.
420 Ошибка метода ( Spring Framework )
Устаревший ответ, используемый Spring Framework при сбое метода.
420 Повышайте свое спокойствие ( Twitter )
Возвращается версией 1 Twitter Search and Trends API, когда клиент ограничен по скорости; версии 1.1 и более поздние используют код ответа 429 Too Many Requests . Фраза «Укрепите свое спокойствие» взята из фильма 1993 года « Человек-подрывник» , и ее связь с этим числом, вероятно, относится к каннабису .
430 Поля заголовка запроса слишком велики ( Shopify )
Используется Shopify вместо кода ответа 429 Too Many Requests , когда слишком много URL-адресов запрашивается в течение определенного периода времени.
450 заблокировано родительским контролем Windows (Microsoft)
Код расширения Microsoft указывает, что родительский контроль Windows включен и блокирует доступ к запрошенной веб-странице.
498 Неверный токен (Esri)
Возвращено ArcGIS for Server . Код 498 указывает на просроченный или недействительный токен по иным причинам.
Требуется 499 токенов (Esri)
Возвращено ArcGIS for Server . Код 499 указывает на то, что токен требуется, но не был отправлен.
509 Превышен предел пропускной способности ( веб-сервер Apache / cPanel )
Сервер превысил пропускную способность, указанную администратором сервера; это часто используется провайдерами виртуального хостинга для ограничения полосы пропускания клиентов.
526 Неверный сертификат SSL
Используется Cloudflare и горутером Cloud Foundry для индикации сбоя проверки сертификата SSL / TLS, представленного исходным сервером.
529 Сайт перегружен
Используется Qualys в сервере тестирования API SSLLabs , чтобы сигнализировать о том , что сайт не может обработать запрос.
530 Сайт заморожен
Используется веб-платформой Pantheon для обозначения сайта, который был заблокирован из-за бездействия.
598 (Неофициальное соглашение) Ошибка тайм-аута сетевого чтения.
Используется некоторыми прокси-серверами HTTP для передачи сигнала таймаута сетевого чтения за прокси-сервером клиенту перед прокси.

Информационные службы Интернета

Веб-сервер Microsoft Internet Information Services (IIS) расширяет область ошибок 4xx, чтобы сигнализировать об ошибках в запросе клиента.

440 Время ожидания входа в систему
Срок действия сеанса клиента истек, и ему необходимо снова войти в систему.
449 Повторить с
Сервер не может выполнить запрос, потому что пользователь не предоставил требуемую информацию.
451 перенаправление
Используется в Exchange ActiveSync, когда доступен более эффективный сервер или сервер не может получить доступ к почтовому ящику пользователей. Ожидается, что клиент повторно запустит операцию HTTP AutoDiscover, чтобы найти более подходящий сервер.

IIS иногда использует дополнительные десятичные субкоды для более конкретной информации, однако эти субкоды появляются только в полезных данных ответа и в документации, а не вместо фактического кода состояния HTTP.

nginx

Программное обеспечение веб-сервера nginx расширяет область ошибок 4xx, чтобы сигнализировать о проблемах с запросом клиента.

444 Нет ответа
Используется внутри для указания серверу не возвращать информацию клиенту и немедленно закрыть соединение.
494 Заголовок запроса слишком большой
Клиент отправил слишком большой запрос или слишком длинную строку заголовка.
495 Ошибка сертификата SSL
Расширение кода ответа 400 Bad Request , используемого, когда клиент предоставил недействительный сертификат клиента .
496 Требуется сертификат SSL
Расширение кода ответа 400 Bad Request , используемого, когда сертификат клиента требуется, но не предоставляется.
497 HTTP-запрос отправлен на HTTPS-порт
Расширение кода ответа 400 Bad Request , используемого, когда клиент отправил HTTP-запрос на порт, который прослушивает HTTPS-запросы.
499 Клиент закрытый запрос
Используется, когда клиент закрыл запрос до того, как сервер смог отправить ответ.

Cloudflare

Сервис обратного прокси Cloudflare расширяет область ошибок серии 5xx, чтобы сигнализировать о проблемах с исходным сервером.

520 Веб-сервер возвратил неизвестную ошибку
Исходный сервер вернул Cloudflare пустой, неизвестный или необъяснимый ответ.
521 Веб-сервер не работает
Исходный сервер отклонил соединение с Cloudflare.
522 Время ожидания подключения истекло
Cloudflare не удалось согласовать рукопожатие TCP с исходным сервером.
523 Источник недоступен
Cloudflare не смог связаться с исходным сервером; например, если записи DNS для исходного сервера неверны.
524 Истекло время ожидания
Cloudflare удалось установить TCP-соединение с исходным сервером, но не получил своевременного ответа HTTP.
525 SSL Handshake Failed
Cloudflare не удалось согласовать рукопожатие SSL / TLS с исходным сервером.
526 Неверный сертификат SSL
Cloudflare не удалось проверить сертификат SSL на исходном веб-сервере.
527 Ошибка рельсотрона
Ошибка 527 указывает на прерванное соединение между Cloudflare и сервером Railgun исходного сервера.
530
Ошибка 530 возвращается вместе с ошибкой 1xxx.

AWS Elastic Load Balancer

Amazon «s Elastic Load Balancing добавляет несколько пользовательских кодов возврата 4xx

460

Клиент закрыл соединение с балансировщиком нагрузки до истечения периода ожидания простоя. Обычно, когда время ожидания клиента меньше, чем время ожидания Elastic Load Balancer.

463

Балансировщик нагрузки получил заголовок запроса X-Forwarded-For с более чем 30 IP-адресами.

Смотрите также

Примечания

Ссылки

внешние ссылки

API для генерации ответов сервера с любыми кодами статусов / Хабр

Привет, Хабр! Работая над библиотекой-обёрткой REST API, я столкнулся с проблемой. Для тестирования обработки ошибочных кодов ответа сервера (400, 500, 403 и т. д.) необходимо искусственно создавать условия на сервере для получения соответствующих кодов. При правильно настроенном сервере, например, непросто получить ошибку 500. А тестировать функции-обработчики ошибок как-то надо. Я написал небольшое API, которое генерирует ошибочные ответы сервера — httpme.tk

Как применять в тестировании?

Например, есть такой код (python3):

from requests import session as requests_session

session = requests_session()
session.hooks = {
    'response': lambda r, *args, **kwargs: raise AccessError('Доступ закрыт, т.к. сервер подключен к другой БД') if r.status_code == 403  else pass
}

class AccessError(Exception):
    """ 'своя' ошибка """
    pass

def getter(url):
    return session.get(url)

Если кратко — в коде есть функция, которая возвращает ответ сервера на GET-запрос на заданный URL, если в результате выполнения запроса возникает ошибка 403 — вызывается внутреннее исключение модуля AccessError.

Этот код надо протестировать и отладить. Cоздать вручную условия для ошибки 403, а уж тем более, например, 500 (сервер слишком хорошо работает) довольно непросто. Тестировщику не важно, при каких условиях сервер выдаст ошибку 403: он тестирует не само API (например), а функцию, которая к нему обращается. Поэтому для тестирования вызова исключения при коде статуса 403 он может сделать вот так (python3 + pytest):

import pytest
from mymodule import 

def test_forbidden():
    with pytest.raises(AccessError):
        getter('http://httpme.tk/403')

Как пользоваться?

Очень просто. Отправьте на сервер GET-запрос в формате http://httpme.tk/<status_code>. Например так (cURL):

curl -G http://httpme.tk/500

Или так (python3):

from requests import get

get('http://httpme.tk/408')  # <Response [408]>

А что внутри?

А внутри маленькое Flask-приложение, вызывающее функцию abort(status_code) на каждый запрос.

→ Ссылка на GitHub

На этом всё!

Интересно услышать оценку полезности данного сервиса сообществом.

HTTP 400 и 500 коды состояния

Введение

Оптимизатор видео AT&T специально определяет все коды состояния HTTP 400 и 500, обнаруженные в трассировке приложения. Эти коды являются важной частью анализа приложения, поскольку они предоставляют информацию о возможных ошибках, возникающих в результате HTTP-запроса.

Самый известный код состояния HTTP — это код ошибки 404, который стал широко известен благодаря Интернету. Это означает, что запрошенной страницы не существует.

В этом углубленном изучении передовой практики дается некоторая справочная информация о том, что представляют различные классы кодов состояния HTTP, описываются проблемы, возникающие при использовании наиболее распространенных кодов состояния 400 и 500, и обсуждаются возможные решения для них.

Фон

Термин «Код состояния HTTP» обычно используется взаимозаменяемо с термином «Строка состояния HTTP», но они немного отличаются. Строка состояния HTTP является более полной и состоит из двух частей: (1) код состояния HTTP (т.е.e.404) и HTTP Reason Phrase (т.е. запрошенная страница не существует).

Первая цифра кода состояния HTTP указывает один из пяти классов ответа. Самый минимум для HTTP-клиента — это то, что он распознает эти пять классов. Первая цифра 1, 2 или 3 представляет полностью функциональный запрос. Первая цифра 4 представляет ошибку на стороне клиента с наиболее частыми кодами в диапазоне от 400 до 404. Первая цифра 5 представляет ошибку на стороне сервера с наиболее распространенными кодами в диапазоне от 500 до 510.Поскольку коды в диапазоне 400 и 500 представляют собой ошибки, их также называют кодами ошибок HTTP.

Важно знать, что означают коды ошибок HTTP 400 и 500, чтобы вы могли решать проблемы, которые они вызывают, особенно если вы контролируете причину.

Полный список всех кодов состояния HTTP можно найти в IANA или W3C.

Выпуск

Появление кода ошибки HTTP указывает на проблему, которая может нарушить работу приложения или ухудшить работу пользователя.

AT&T Video Optimizer считает любое появление кода ошибки HTTP в трассировке приложения ошибкой теста Best Practices «400, 500 кодов ответа HTTP». Результаты этого теста отображаются на вкладке Best Practices анализатора данных Video Optimizer, где вы можете увидеть, сколько кодов ошибок HTTP каждого типа было записано.

Однако неудача этого теста не обязательно означает, что есть над чем действовать. Каждую проблему, которую вызывает код ошибки HTTP, необходимо решать отдельно.

Рекомендация по передовой практике

Лучшая рекомендация для кодов ошибок HTTP 400 и 500 — сделать все возможное, чтобы устранить проблему, вызывающую ошибку.

Цель состоит в том, чтобы ошибок не было. Однако могут быть смягчающие обстоятельства для появления кода ошибки HTTP, такие как ошибка пользователя, поэтому каждое появление кода ошибки следует рассматривать индивидуально.

В следующем списке описаны наиболее распространенные коды ошибок HTTP и приведены некоторые возможные решения.

400 неверный запрос

Эта ошибка указывает на то, что запрос пользователя содержит неверный синтаксис.

401 Неавторизованный

Эта ошибка означает, что запрошенный файл требует аутентификации (имя пользователя и пароль).

403 Запрещено

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

404 Не найдено

Эта ошибка указывает на то, что серверу не удалось найти файл, запрошенный посетителем. Обычно это происходит, когда URL-адрес введен с ошибкой.

5xx Ошибки

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

Также важно учитывать, что довольно часто цепочка серверов обрабатывает HTTP-запрос, так что это может быть не ваш сервер, который возвращает ошибку.

500 Внутренняя ошибка сервера

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

501 Не реализовано

Эта ошибка указывает на то, что метод HTTP, отправленный клиентом, не поддерживается сервером. Чаще всего это происходит из-за того, что сервер устарел. Это очень редкая ошибка и обычно требует обновления веб-сервера.

502 Плохой шлюз

Эта ошибка обычно возникает из-за неправильно настроенных прокси-серверов. Однако проблема может также возникнуть при плохой IP-связи между внутренними компьютерами, когда клиентский сервер перегружен или когда брандмауэр работает неправильно.

Первым шагом в решении проблемы является очистка кеша клиента. Это действие должно привести к использованию другого прокси-сервера для разрешения содержимого веб-сервера.

503 Служба недоступна

Эта ошибка возникает, когда сервер не может обрабатывать запросы из-за временной перегрузки или из-за того, что сервер временно закрыт для обслуживания.Ошибка указывает на то, что сервер будет временно недоступен. Вместо 503 можно получить другие ошибки.

Обратитесь к администратору сервера, если проблема не исчезнет.

504 Тайм-аут шлюза

Эта ошибка возникает, когда сервер где-то в цепочке не получает своевременный ответ от сервера, расположенного дальше по цепочке. Проблема полностью вызвана медленной связью между вышестоящими компьютерами.

Чтобы решить эту проблему, обратитесь к системному администратору.

505 Версия HTTP не поддерживается

Эта ошибка возникает, когда сервер отказывается поддерживать протокол HTTP, указанный клиентским компьютером. Это может быть вызвано неправильным указанием протокола клиентским компьютером; например, если указан неверный номер версии.

506 Вариант также оговаривается

Эта ошибка указывает на то, что сервер неправильно настроен. Обратитесь к системному администратору для решения этой проблемы.

507 Недостаточно памяти

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

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

Обратитесь к системному администратору для получения дополнительной информации об этом сообщении об ошибке.

509 Превышен предел пропускной способности

Эта ошибка возникает при достижении лимита полосы пропускания, установленного системным администратором. Единственное решение этой проблемы — дождаться сброса лимита в следующем цикле.

Обратитесь к системному администратору за информацией о получении большей пропускной способности.

510 Не расширенный

Эта ошибка возникает, когда расширение, прикрепленное к HTTP-запросу, не поддерживается веб-сервером.

Для решения проблемы может потребоваться обновить сервер. За дополнительной информацией обращайтесь к системному администратору.

Ошибка HTTP 400 Неверный запрос | Значение и решение

Как пользователь Интернета: удалить файлы cookie и сбросить настройки браузера

Ошибка HTTP 400 возникает, если заголовок HTTP слишком длинный. В принципе, заголовки не имеют ограничения по размеру, однако целевой сервер может установить ограничение. Заголовок состоит из нескольких полей, в которых определяются запросы и ответы.Если оба вызывающих абонента соответствуют параметрам, будет произведен обмен запрошенными данными. Если это не сработает, появится сообщение об ошибке. Поскольку это связано с взаимодействием между браузером и веб-сервером , а 400 ошибок обычно вызваны проблемами с клиентом, браузер, вероятно, несет ответственность за ошибку. Лучший способ проверить, может ли ваш браузер по умолчанию быть причиной проблемы: временно переключиться на другой браузер.

Если к странице можно получить доступ с помощью тестового браузера, вернитесь к исходному веб-браузеру.Удалите все файлы cookie (если вы еще этого не сделали). По соображениям безопасности лучше удалить их все, а не только один. Файлы cookie передаются в заголовке, и именно так веб-сервер узнает о вашем предыдущем посещении. Если браузеру придется обрабатывать слишком много запросов, это может означать, что заголовок превысит ограничение на длину.

Если это решение не работает, попробуйте полностью переустановить браузер или сбросить его до настроек по умолчанию .В зависимости от того, какой браузер вы используете, есть разные способы его сбросить. Для Firefox введите about: support для устранения неполадок. Здесь вы найдете много информации, которая поможет вам обнаружить ошибки в программном обеспечении. Даже если вы обратитесь в службу поддержки, все равно важно иметь эти данные. На этой странице вы увидите кнопку, которая позволяет вам « очистить Firefox ». Когда вы нажимаете на него, он удаляет расширения и некоторые настройки, но сохранит ваши текущие настройки.

В Internet Explorer вы можете найти кнопку « Сбросить » в параметрах Интернета на вкладке « Advanced » или « Restore defaults » (в IE 6). Браузер Microsoft позволяет вам выбрать, хотите ли вы удалить свои личные настройки при сбросе. Поскольку Internet Explorer также считает кеш и файлы cookie как эти типы настроек, рекомендуется удалить и их.

С Chrome вы найдете функции сброса в системных настройках.Браузер хранит ваши личные данные, такие как сохраненные пароли и историю, но возвращает все остальное в исходное состояние. Закройте браузер и перезапустите его, чтобы изменения вступили в силу.

Коды состояния HTTP для неверных данных: 400 против 422

Допустим, кто-то делает запрос к вашему серверу с данными в правильном формате, но просто не является «хорошими» данными. Так, например, представьте, что кто-то отправил значение String в конечную точку API, которая ожидала значение String; но значение строки содержало данные, которые были занесены в черный список (например,предотвращение использования людьми «пароля» в качестве пароля). Какой код статуса HTTP вы бы вернули?

До сих пор я бы возвращал «400 Bad Request», что, согласно w3.org, означает:

Запрос не мог быть понят сервером из-за неправильного синтаксиса. Клиенту НЕ СЛЕДУЕТ повторять запрос без изменений.

Это описание не совсем соответствует обстоятельствам; но, если вы воспользуетесь списком основных кодов состояния HTTP, определенных в протоколе HTTP / 1.1, это, вероятно, ваш лучший выбор.

Однако недавно Джейми Круг (Jamie Krug) указал [мне], что популярные API-интерфейсы начинают использовать расширения HTTP, чтобы получать более детальные отчеты об ошибках. В частности, многие API, такие как Twitter и Recurly, используют код состояния «422 Unprocessable Entity», как определено в расширении HTTP для WebDAV. Код состояния HTTP 422 указывает:

Код состояния 422 (Unprocessable Entity) означает, что сервер понимает тип содержимого объекта запроса (следовательно, код состояния 415 (Unsupported Media Type) не подходит), а синтаксис объекта запроса следующий. правильный (таким образом, код состояния 400 (неверный запрос) неприемлем), но не смог обработать содержащиеся инструкции.Например, это состояние ошибки может возникнуть, если тело запроса XML содержит правильно сформированные (т. Е. Синтаксически правильные), но семантически ошибочные инструкции XML.

Возвращаясь к нашему примеру с паролем сверху, этот код состояния 422 кажется гораздо более подходящим. Сервер понимает, что вы пытаетесь сделать; и он понимает данные, которые вы отправляете; он просто не позволит обработать эти данные.

Код состояния HTTP 422 кажется гораздо более подходящим ответом для ситуаций, когда данные понятны, но по-прежнему недействительны.Думаю, я начну использовать это в будущем. Спасибо Джейми !

Понравилось это? Возможно, вам также понравится читать:

Обработка ошибок

При работе с API будут возникать ошибки, и их необходимо правильно обрабатывать на клиенте.

Ошибка характеризуется несколькими параметрами:

Код ошибки

Числовое значение, аналогичное статусу HTTP.Содержит информацию о типе возникшей ошибки: например, ошибка ввода данных, ошибка конфиденциальности или ошибка сервера. Это обязательный параметр.

Тип ошибки

Строковый литерал в форме / [A-Z_0-9] + / , который описывает проблему. Например, AUTH_KEY_UNRULL . Это необязательный параметр.


Конструкторы ошибок

Должен быть способ обработки ошибок, возвращаемых конструкторами rpc_error.

Ниже приведен список кодов ошибок и их значений:

303 SEE_OTHER

Запрос необходимо повторить, но направить в другой центр обработки данных.

Примеры ошибок:
  • FILE_MIGRATE_X: файл, к которому нужно получить доступ, в настоящее время хранится в другом центре обработки данных.
  • PHONE_MIGRATE_X: номер телефона, который пользователь пытается использовать для авторизации, связан с другим центром обработки данных.
  • NETWORK_MIGRATE_X: исходный IP-адрес связан с другим центром обработки данных (для регистрации)
  • USER_MIGRATE_X: пользователь, личность которого используется для выполнения запросов, связан с другим центром обработки данных (для регистрации)

Во всех этих случаях строковый литерал описания ошибки содержит номер центра обработки данных (вместо X), в который должен быть отправлен повторный запрос.Подробнее о редиректах между дата-центрами »

400 BAD_REQUEST

Запрос содержит ошибки. В том случае, если запрос был создан с использованием формы и содержит данные, созданные пользователем, пользователь должен быть уведомлен о том, что данные должны быть исправлены, прежде чем запрос будет повторен.

Примеры ошибок:
  • FIRSTNAME_INVALID: имя недействительно
  • LASTNAME_INVALID: недопустимая фамилия
  • PHONE_NUMBER_INVALID: номер телефона недействителен
  • PHONE_CODE_HASH_EMPTY: phone_code_hash отсутствует
  • PHONE_CODE_EMPTY: phone_code отсутствует
  • PHONE_CODE_EXPIRED: срок действия кода подтверждения истек
  • API_ID_INVALID: комбинация api_id / api_hash недопустима
  • PHONE_NUMBER_OCCUPIED: номер телефона уже используется
  • PHONE_NUMBER_UNOCCUPIED: номер телефона еще не используется
  • USERS_TOO_FEW: недостаточно пользователей (например, для создания чата)
  • USERS_TOO_MUCH: превышено максимальное количество пользователей (например, для создания чата)
  • TYPE_CONSTRUCTOR_INVALID: конструктор типа недействителен
  • FILE_PART_INVALID: неверный номер части файла
  • FILE_PARTS_INVALID: недопустимое количество частей файла
  • FILE_PART_Х_MISSING: часть X (где X — номер) файла отсутствует в хранилище
  • MD5_CHECKSUM_INVALID: контрольные суммы MD5 не соответствуют
  • PHOTO_INVALID_DIMENSIONS: неверные размеры фотографии
  • FIELD_NAME_INVALID: поле с именем FIELD_NAME недействительно
  • FIELD_NAME_EMPTY: поле с именем FIELD_NAME отсутствует
  • MSG_WAIT_FAILED: ожидающий вызов вернул ошибку

401 НЕАВТОРИЗОВАННЫЙ

Произошла неавторизованная попытка использовать функции, доступные только авторизованным пользователям.

Примеры ошибок:
  • AUTH_KEY_UNRIGN: Ключ не зарегистрирован в системе
  • AUTH_KEY_INVALID: ключ недействителен
  • USER_DEACTIVATED: Пользователь удален / деактивирован
  • SESSION_REVOKED: авторизация была аннулирована из-за того, что пользователь завершил все сеансы
  • SESSION_EXPIRED: срок авторизации истек
  • AUTH_KEY_PERM_EMPTY: метод недоступен для временного ключа авторизации, не привязан к постоянному

403 ЗАПРЕЩЕНО

Нарушение конфиденциальности.Например, попытка написать сообщение кому-то, кто занес текущего пользователя в черный список.

404 НЕ НАЙДЕНО

Попытка вызвать несуществующий объект, например метод.

406 НЕ ПРИНИМАЕТСЯ

Аналогично 400 BAD_REQUEST, но приложение не должно отображать какие-либо сообщения об ошибках для пользователя в пользовательском интерфейсе в результате этого ответа. Вместо этого сообщение об ошибке будет доставлено через updateServiceNotification.

420 НАВОДНЕНИЕ

Превышено максимально допустимое количество попыток вызвать данный метод с заданными входными параметрами.Например, при попытке запросить большое количество текстовых сообщений (SMS) на один и тот же номер телефона.

Пример ошибки:
  • FLOOD_WAIT_X: требуется ожидание X секунд (где X — число)

500 ВНУТРЕННИЙ

Внутренняя ошибка сервера при обработке запроса; например, произошел сбой при доступе к базе данных или файловому хранилищу.

Если клиент получает ошибку 500 или вы считаете, что эта ошибка не должна была возникнуть, пожалуйста, соберите как можно больше информации о запросе и ошибке и отправьте ее разработчикам.

Другие коды ошибок

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

Ошибок | HTTP API | commercetools

Распространенные коды ошибок HTTP, используемые в API платформы commercetools, и их значение.

Подробные сведения о структуре и кодах ошибок конкретного приложения веб-службы платформы commercetools см. В документации, посвященной этой службе.

Общие коды ошибок HTTP

400 Плохой запрос

Затронутые методы HTTP: GET , POST , DELETE

Ответ 400 является наиболее часто ожидаемым ответом с ошибкой и указывает, что запрос не удалось выполнить из-за предоставления плохой ввод. Плохой ввод может быть искаженным телом запроса, отсутствующими обязательными параметрами, неверно типизированными или искаженными параметрами или параметром, который ссылается на другой несуществующий ресурс. Клиентам необходимо решить проблемы, упомянутые в ответе, перед повторной отправкой запроса.

401 Неавторизованный

Затронутые методы HTTP: GET , POST , DELETE

A 401 указывает, что запрос не прошел надлежащую аутентификацию.

403 Запрещено

Затронутые методы HTTP: GET , POST , DELETE

A 403 указывает, что аутентифицированному клиенту не разрешено выполнять запрос.

404 Не найден

Затронутые методы HTTP: GET , POST , DELETE

404 указывает, что указанный ресурс не найден / не существует.

409 Конфликт

Затронутые методы HTTP: POST , DELETE

A 409 указывает, что ресурс, на который направлен запрос (с намерением изменить или удалить ресурс), был изменен с момента последнего клиент запросил это. В качестве реакции клиент обычно захочет запросить самую новую версию ресурса, чтобы увидеть, что изменилось, и затем может решить применить те же или другие изменения к новой версии или полностью отменить свои изменения.

Конфликты указывают на одновременную модификацию и обычно возникают на ресурсах с поддержкой версий, для которых клиент должен включать версию ресурса всякий раз, когда он намеревается применить к нему модификации.

По возможности, тело ответа HTTP содержит поле currentVersion (необязательно), например:

 

{

«statusCode»: 409,

«message»: «Несоответствие версии. Одновременное изменение.»,

» ошибки »: [

{

« код »:« ConcurrentModification »,

« сообщение »:« Несоответствие версии.Одновременная модификация. ",

" currentVersion ": 2

}

]

}

500 Внутренняя ошибка сервера

Затронутые методы HTTP: GET , POST , DELETE 500 указывает на то, что запрос завершился неудачно из-за проблемы на стороне сервера, которую необходимо решить, прежде чем последующие запросы могут быть успешными. Это указывает либо на временную недоступность, либо на постоянную проблему на стороне сервера, о которой необходимо сообщить и устранить.

Ответы об ошибках

Общая структура ответов об ошибках от API выглядит следующим образом:

 

{

«statusCode»: 400,

«message»: «Первое сообщение об ошибке»,

«ошибки» : [

{"code": "SomeErrorCode", "message": "Первое сообщение об ошибке"},

{"code": "SomeErrorCode", "message": "Второе сообщение об ошибке"}

]

}

Ответ об ошибке всегда содержит следующие поля:

  • statusCode : код состояния HTTP, соответствующий ошибке.
  • сообщение : поле сообщение первой ошибки в массиве ошибок .
  • ошибок : массив, содержащий все ошибки, которые произошли для этого запроса. Каждая ошибка содержит следующие поля:
    • код : идентификатор ошибки String. Вы можете найти дополнительную информацию об ошибке на этой странице, используя ее код .
    • сообщение : описание причины ошибки простым языком.

Некоторые ошибки имеют дополнительные поля рядом с кодом и сообщением и соответствующим образом задокументированы.

Следующие разделы описывают возможные ошибки следующим образом:

  • <Код состояния HTTP> - <Код ошибки>
    <Описание>

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

Ошибки, связанные с OAuth

Ошибки, связанные с аутентификацией и авторизацией, также соответствуют спецификации OAuth3. Они дополнительно содержат поле error и, если доступно, поле error_description .

 

{

«statusCode»: 401,

«message»: «Этой конечной точке требуется маркер доступа. Вы можете получить его с сервера авторизации.»,

«errors»: [

{

» code ":" access_denied ",

" message ":" Этой конечной точке требуется маркер доступа.Вы можете получить его с сервера авторизации. »

}

],

« error »:« access_denied »,

« error_description »:« Эта конечная точка требует токен доступа. Вы можете получить его с сервера авторизации. "

}

Также обратите внимание, что коды ошибок, определенные спецификацией OAuth, не записываются в camelCase.

Ошибки из расширения API

Расширения

API могут проверять вызовы API и отклонять обновления в результате получен ответ 400 Bad Request.Расширения API также имеют случаи ошибок.

Когда расширение API связано с ошибкой, к ответу об ошибке добавляется поле errorByExtension . Поле errorByExtension содержит идентификатор и (если установлен) ключ расширения API. Если расширение API возвращает поля localizedMessage или extensionExtraInfo в ошибке проверки, они также добавляются в ответ об ошибке.

 

{

"statusCode": 400,

"message": "Расширение API обнаружило, что ваш запрос недействителен.",

" ошибок ": [

{

" код ":" InvalidInput ",

" сообщение ":" Расширение API обнаружило, что ваш запрос недействителен. ",

" localizedMessage ": {

"ru": "Расширение API обнаружило, что ваш запрос недействителен.",

"de": "Расширение API, которое имеет недопустимое значение."

},

"extensionExtraInfo": {

"anotherField ": [" Foo "," Bar "],

" baz ": true

},

" errorByExtension ": {

" id ":" ",

" key ": "my-extension"

}

}

]

}

Общие

500 Внутренняя ошибка сервера

Следующие общие коды ошибок могут появляться в ответах с кодом состояния HTTP 500 :

  • Общие
    Сервер возникла проблема, которая не уточняется.
    Об этих ошибках следует сообщать на портале поддержки.

503 Служба недоступна

Следующие общие коды ошибок могут появляться в ответах с кодом состояния HTTP 503 :

  • OverCapacity
    Служба не справляется с нагрузкой.
    Клиентское приложение должно повторить запрос с экспоненциальной задержкой до момента, когда дальнейшая задержка недопустима.

  • PendingOperation
    Предыдущая конфликтующая операция все еще не завершена и должна быть завершена, прежде чем запрос будет успешным.
    Клиентское приложение должно повторить запрос с экспоненциальной задержкой до момента, когда дальнейшая задержка недопустима.
    Если эти ошибки повторяются, о них следует сообщить на портале поддержки.

404 Not Found

Следующие общие коды ошибок могут появляться в ответах с кодом состояния HTTP 404 :

  • ResourceNotFound
    Ресурс, на который ссылается URL-адрес запроса, не существует.

400 Плохой запрос

Следующие общие коды ошибок могут появляться в ответах с кодом состояния HTTP 400 :

  • AnonymousIdAlreadyInUse
    Анонимный идентификатор уже используется другим ресурсом.
    Клиентское приложение должно выбрать другой анонимный идентификатор или получить автоматически созданный.

  • DuplicateField
    Значение поля конфликтует с существующим повторяющимся значением.
    Дополнительные поля:

    • поле - Строка
      Имя поля.
    • duplicateValue - *
      Неправильное повторяющееся значение.
  • DuplicateFieldWithConflictingResource
    Значение поля конфликтует с существующим повторяющимся значением, хранящимся в конкретном ресурсе.
    Дополнительные поля:

    • поле - Строка
      Имя поля.
    • duplicateValue - *
      Неправильное повторяющееся значение.
    • конфликтующий ресурс - ссылка на конфликтующий ресурс
  • FeatureRemoved
    Запрошенный ресурс был удален.
    Клиентское приложение должно вместо этого использовать функцию, рекомендованную в сообщении об ошибке.

  • InvalidInput
    Неверный ввод был отправлен в службу.
    Клиентское приложение должно проверить ввод в соответствии с ограничениями, описанными в сообщении об ошибке, перед отправкой запроса.

  • InvalidJsonInput
    Службе был отправлен недопустимый ввод JSON. Либо JSON синтаксически неверен, либо JSON не соответствует ожидаемой форме (например, отсутствует обязательное поле).
    Клиентское приложение должно проверить ввод в соответствии с ограничениями, описанными в сообщении об ошибке, перед отправкой запроса.

  • InvalidOperation
    Ресурсы, задействованные в запросе, не находятся в допустимом состоянии для операции. Клиентское приложение должно проверить ограничения, описанные в сообщении об ошибке, перед отправкой запроса.

  • InvalidField
    Поле имеет недопустимое значение.
    Дополнительные поля:

    • поле - Строка
      Имя поля.
    • invalidValue - *
      Недопустимое значение.
    • allowedValues ​​ - Массив * - Необязательно
      Фиксированный набор допустимых значений для поля, если таковые имеются.
  • InternalConstraintViolated
    Указанный код скидки никогда не применялся и не может быть обновлен.

  • MaxResourceLimitExceeded
    Невозможно создать больше ресурсов типа в этом запросе. Перед повторной отправкой запроса необходимо изменить конфигурацию ограничений для этого ресурса.
    Дополнительные поля:

    • exceededResource - ReferenceType
      Тип ресурса, для которого достигнуто максимальное значение настроенных элементов, например 100 зон на проект, поэтому создание дополнительных объектов невозможно.
  • ObjectNotFound
    Запрошенный ресурс не найден.

  • ReferenceExists
    Ресурс не может быть удален, поскольку на него ссылается что-то еще.

  • ReferencedResourceNotFound
    Не удалось найти ресурс, на который ссылается ссылка или ResourceIdentifier.
    Дополнительные поля:

    • typeId - ReferenceType
      Тип ресурса, на который имеется ссылка.
    • id - String - Необязательно
      Уникальный идентификатор ресурса, на который имеется ссылка, если он известен.
    • ключ - Строка - Необязательно
      Уникальный ключ ссылочного ресурса, если он известен.
  • RequiredField
    В обязательном поле отсутствует значение.
    Дополнительные поля:

    • поле - Строка
      Имя поля.
  • ResourceSizeLimitExceeded
    Размер ресурса превышает максимально допустимый размер 16 МБ.

  • SemanticError
    Предикат семантически неверен.

  • SyntaxError
    У поискового запроса или предиката неправильный синтаксис.

  • QueryTimedOut
    Истекло время ожидания запроса. Если время ожидания вашего запроса постоянно истекает, убедитесь, что он соответствует рекомендациям по производительности.

409 Конфликт

Следующие общие коды ошибок могут появляться в ответах с кодом состояния HTTP 409 :

  • ConcurrentModification
    Запрос конфликтует с текущим состоянием задействованных ресурсов.Обычно запрос пытается изменить ресурс, который устарел.
    Устаревший означает, что ресурс был изменен другим клиентом с момента его последнего получения.
    Клиентское приложение должно разрешить конфликт (с участием или без участия конечного пользователя)
    перед повторной попыткой запроса.

Ответы на ошибки расширения

Следующие коды ошибок возвращаются, когда расширение API, запущенное во время запроса API, не отвечает успешно.

502 Неверный ответ внутреннего абонента

  • ExtensionBadResponse
    Ответа не ожидалось.Некоторые примеры включают неожиданный код состояния HTTP, например 500 , или недопустимый ответ JSON.

502 Ошибка обновления расширений

  • ExtensionUpdateActionsFailed
    Не удалось правильно применить действие обновления. Это привело бы к ответу 400 Bad Request, если бы такое же действие обновления было отправлено от обычного клиента. Пример: вызов AddLineItem ссылается на несуществующий продукт.

504 Внутренний номер Нет ответа

  • Внутренний номер Нет ответа
    Расширение не вернуло ответ в отведенное время или не было достигнуто.

Ответы на ошибки внешнего OAuth

Следующий код ошибки возвращается, когда конечная точка внешнего наблюдения OAuth, запущенная во время запроса API, не отвечает успешно.

502 или 504 External OAuth Failed

  • ExternalOAuthFailed
    Конечная точка External OAuth Introspection не вернула ответ в течение установленного времени, или ответ не соответствовал RFC 7662 (например, код статуса HTTP, такой как 500 ).

Продукты

400 Плохой запрос

В ответах с кодом состояния HTTP могут появиться следующие коды ошибок продукта 400 :

  • DuplicatePriceScope
    Указанный диапазон цен конфликтует с существующим.
    Каждая цена варианта продукта должна иметь отличную комбинацию
    валюты, группы клиентов, страны и канала. Эти четыре свойства
    составляют объем цены.
    Дополнительные поля:

    • конфликтующие цены - Массив, содержащий две цены, конфликтующие друг с другом.
  • DuplicateVariantValues ​​
    Заданная комбинация значений вариантов конфликтует с существующей.
    Каждый вариант продукта должен иметь отличную комбинацию
    Артикул, цены и значения настраиваемых атрибутов.
    Дополнительные поля:

    • optionValues ​​ - Значения ошибочного варианта:
      • sku - String - Необязательно
      • Цены - Массив цен
      • атрибутов - Массив атрибутов
    • DuplicateAttributeValue
      Уникальное ограничение атрибута было нарушено.
      Дополнительные поля:

      • атрибут - атрибут
        Конфликтующий атрибут.
    • DuplicateAttributeValues ​​
      Ограничение атрибута CombinationUnique было нарушено.
      Дополнительные поля:

      • атрибутов - Массив атрибутов
        Конфликтующие атрибуты CombinationUnique.

    Типы продуктов

    400 Неверный запрос

    Следующие коды ошибок, зависящие от типа продукта, могут появляться в ответах с кодом состояния HTTP 400 :

    • AttributeDefinitionAlreadyExists
      Заданное имя AttributeDefinition конфликтует с именем AttributeDefinition уже определенный атрибут.
      Дополнительные поля:

      • конфликтующих имя конфликтующего атрибута
    • AttributeDefinitionTypeConflict
      Данное имя AttributeDefinition уже существует для другого типа продукта с другим типом.
      Дополнительные поля:

      • конфликтующих но другой тип
      • конфликтующий атрибут
        Дополнительное поле:

        • дубликатов - Массив строк - повторяющиеся ключи
      • EnumKeyAlreadyExists
        Данное перечисление или lenum содержит ключ, который уже существует.
        Дополнительные поля:

        • конфликтующийEnumKey - Строка - Конфликтующий ключ перечисления
        • Конфликтующее Имя атрибута - Строка - Имя конфликтующего атрибута
      • EnumKeyDoes16 или значение перечисления 905Exum уже содержит перечисление 902 данный ключ.
        Дополнительные поля:

        • конфликтующийEnumKey - Строка - Конфликтующий ключ перечисления
        • Конфликтующее Имя атрибута - Строка - Имя конфликтующего атрибута
      • AttributeNameDoesNot49ist имя атрибута не существует для данного атрибута .
        Дополнительные поля:

        • invalidAttributeName - String - Несуществующее имя атрибута
      • EnumValuesMustMatch
        При изменении порядка значений enum или lenum все существующие значения должны быть переданы

        90sedumValue

        7

        7 EnumValue из обязательного атрибута, но EnumValue по-прежнему используется продуктом.

      Заказы

      400 Плохой запрос

      В ответах на запросы создания заказа из корзины с кодом состояния HTTP 400 могут появляться следующие коды ошибок, относящиеся к заказу:

      • OutOfStock
        Некоторые из заказанных позиций нет в наличии на момент размещения заказа.
        Дополнительные поля:

        • lineItems - Массив строк
          идентификаторов позиций, которых нет в наличии.
        • skus - Массив строки
          Артикул позиций, которых нет в наличии.
      • PriceChanged
        Цена, налог или стоимость доставки для некоторых позиций изменились с момента добавления товаров в корзину.
        Дополнительные поля:

        • lineItems - Массив строк
          идентификаторов позиций, для которых изменилась цена или TaxRate.
        • shipping - Boolean
          Истина, если цена доставки изменилась.
      • DiscountCodeNonApplicable
        Корзина содержит код скидки с DiscountCodeState, отличным от MatchesCart .
        Дополнительные поля для несуществующего кода скидки

        • DiscountCode - Строка - код скидки передан
        • причина - Строка - "DoesNotExist"
          Дополнительные поля в коде скидки с недопустимым диапазоном времени:
        • DiscountCode - Строка
          Код скидки передан
        • dicountCodeId - Строка
          Код скидки ID
        • validFrom - DateTime - Дополнительный код скидки
          действителен с этой даты.
        • validUntil - DateTime - Необязательно
          Код скидки действителен до этой даты.
        • validityCheckTime - DateTime
          В какое время производилась проверка действительности кода скидки.
        • причина - Строка - "TimeRangeNonApplicable"
      • ShippingMethodDoesNotMatchCart
        Корзина содержит ShippingMethod, недопустимый для нее. В этом случае значение ShippingMethodState - DoesNotMatchCart .

      • InvalidItemShippingDetails
        Для позиции или настраиваемой позиции задан один или несколько адресов доставки, но количество этого товара не совпадает с суммой количеств в деталях доставки.
        Дополнительные поля:

        • тема - Строка
          Либо «LineItem» , либо «CustomLineItem» .
        • itemId - String
          Идентификатор (настраиваемой) позиции строки, в которой количества, установленные в ItemShippingDetails, не суммируются и не равны количеству (настраиваемой) позиции.
      • MatchingPriceNotFound
        Вариант продукта не содержит цены для выбранной валюты и / или страны, группы клиентов или канала.
        Дополнительные поля:

      • MissingTaxRateForCountry
        Налоговая категория по крайней мере одного из lineItems , customLineItems или shippingInfo в корзине отсутствует TaxRate
        , соответствующая стране в адрес доставки этой корзины.
        Дополнительные поля:

        • taxCategoryId - Строка
          ID налоговой категории
        • страна - Строка - Необязательно
          Трехзначный код валюты в соответствии с ISO 4217.
        • состояние - Строка - Необязательно
          состояние в стране.

      Клиенты

      400 Неверный запрос

      В ответах с кодом состояния HTTP 400 могут появиться следующие коды ошибок клиента:

      • InvalidCredentials
        Учетная запись с указанными учетными данными не найдена.

      • InvalidCurrentPassword
        Данный текущий пароль не совпадает.

      • MissingTaxRateForCountry
        В налоговой категории отсутствует налоговая ставка для страны для некоторых продуктов в корзине покупателя.

      • WeakPassword
        Пароль должен содержать как минимум 1 букву, 1 цифру и 8 символов.

      Скидки на продукт

      404 Не найден

      В ответах с кодом состояния HTTP 404 могут появиться следующие коды ошибок для скидок на продукт:

      • NoMatchingProductDiscountFound
        Не удалось найти скидку на продукт применена к указанной цене для выбранного варианта.

      Способы доставки

      400 Плохой запрос

      Рекомендации по категориям

      403 Запрещено

      • Не включено
        API рекомендаций по категориям еще не включен для вашего проекта.
        По умолчанию API включен для проектов, соответствующих критериям активации.
        определено здесь.

        Если вы хотите включить API в любом случае, вы можете связаться с нами через
        поддержка платформы.

      Search

      400 Bad Request

      Projects

      400 Bad Request

      Stores

      400 Bad Request

      • ProjectNotConfiguredForLanguages ​​
        Указанные языки не поддерживаются проектом.
        Дополнительные поля:

        • languages ​​ - Массив строк
          Языковые теги IETF для языков, которые были предоставлены, но не поддерживаются проектом.
      • MissingRoleOnChannel
        Требуемый ChannelRole отсутствует на данном канале.
        Дополнительные поля:

      GraphQL

      400 Неверный запрос

      Коды состояния HTTP - 4xx

      4xx - ошибка клиента
      Эта группа кодов состояния HTTP указывает, что запрос ресурса содержит неверный синтаксис или не может быть заполнен по какой-либо другой причине, предположительно по вине клиента, отправившего запрос.За исключением ответа на запрос HEAD, серверу СЛЕДУЕТ включать объяснение ситуации с ошибкой и того, является ли это временным или постоянным состоянием. Эти коды состояния применимы к любому методу запроса.

      400 - неверный запрос
      Запрос не понимается сервером из-за неправильного синтаксиса. Клиенту НЕ СЛЕДУЕТ повторять запрос без изменений. Это означает, что веб-сервер не смог понять запрос и обработать его, поскольку запрос, отправленный клиентом (веб-браузером или агентом WebSitePulse), не был сформирован должным образом и не соответствовал стандартам протокола HTTP.

      401 - неавторизованный
      Это сообщение об ошибке означает, что отвечающий сервер требует аутентификации пользователя или что в авторизации было отказано для предоставленных учетных данных с запросом. Если вы только что ввели их, а затем сразу же видите ошибку 401, это означает, что одно или оба вашего имени пользователя и пароля недействительны.

      402 - Требуется оплата
      Этот код зарезервирован для использования в будущем. Предполагалось, что код 402 будет использоваться как часть некоторой формы цифровых платежей, но этого не произошло.

      403 - Запрещено
      Запрос, отправленный на сервер, был законным, сервер его понял, но отказывается отвечать на него и обрабатывать его. Авторизация в этом случае не поможет.

      404 - Файл не найден
      Сервер отвечает этой ошибкой, когда он понимает HTTP-запрос, отправленный клиентом (вашим браузером или агентом мониторинга WebSitePulse), но не находит файлы, указанные по запрошенному URL-адресу. В ответе сервера не указывается, является ли состояние временным или постоянным.Эта ситуация аналогична ответу вашей почтовой службы «вернуть отправителю - адрес неизвестен».
      Ошибка 404 не следует путать с ошибкой «сервер не найден» или аналогичными ошибками, при которых невозможно установить соединение с целевым сервером.
      Для таких URL-адресов, как www.my_website.com, вполне возможно, что запрос вашего веб-сайта был перенаправлен на неправильный сервер. Это происходит, когда записи DNS повреждены. Ошибка 404 также имеет смысл, если ваш сайт полностью мертв.Если это проблема DNS, как только глобальные записи DNS будут обновлены, ваш сайт должен быть доступен.
      Для низкоуровневых URL-адресов эта ошибка обычно указывает на неработающую ссылку.

      405 - Метод запрещен
      Методы доступа к ресурсам на веб-серверах определены в протоколе HTTP, но все веб-серверы можно настроить так, чтобы разрешить или запретить любой метод.
      Ошибка 405 означает, что указанный в запросе метод не разрешен для ресурса, указанного в URL-адресе запроса.
      Он может отображаться, потому что веб-сервер вообще не настроен для приема запросов от посетителей. Ошибки с кодами 405 часто возвращаются при попытке использовать метод POST для отправки информации через форму, но сервер не настроен так, чтобы разрешить метод POST, необходимый для ее обработки.
      Все ошибки 405 записываются в журналы сервера, чтобы ваша компания могла легко их объяснить.

      406 - Не допускается
      Делая запрос, клиент может указать веб-серверу, какие данные он будет принимать обратно.
      Заголовок с кодом ошибки 406 возвращается, если веб-сервер обнаруживает, что единственный ответ, который он может сгенерировать и вернуть клиенту, неприемлем для клиента. Эта ошибка возникает очень редко с веб-браузерами, потому что большинство клиентов принимают любые данные, возвращаемые с сервера.
      Если клиент не является браузером, вы можете проверить заголовки Accept и данные, возвращаемые сервером. Если у вас нет доступа к этой информации, обратитесь в службу технической поддержки WebSitePulse.

      407 - требуется проверка подлинности прокси
      Этот код ошибки аналогичен 401 (неавторизован), и сервер отвечает ошибкой 407, когда запрос от клиента (веб-браузер или наш агент мониторинга) был правильным, но для доступа к ресурсу URL-адреса требуется, чтобы клиент сначала аутентифицировал себя с помощью прокси. Обычно это означает, что вы должны сначала войти в систему (ввести идентификатор пользователя и пароль) с помощью прокси-сервера.

      408 - Тайм-аут запроса
      Сервер отвечает этой ошибкой, если клиент не отправил запрос в течение времени, которое сервер был настроен на ожидание.Клиент может повторить запрос без изменений в любое время.
      Если есть постоянные ошибки 408, проверьте рабочую нагрузку на своем веб-сервере в то время, когда эти ошибки были обнаружены. Другой возможной причиной может быть проблема с подключением.

      409 - Конфликт
      Веб-сервер отвечает этой ошибкой, когда считает запрос клиента законным, но запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.В теле ответа обычно содержится достаточно информации, чтобы пользователь мог распознать источник конфликта и исправить проблему.
      Конфликт здесь обычно не связан со стандартными полномочиями или безопасностью веб-сервера, а связан с конфликтами конкретных приложений, не определенных в самом протоколе HTTP.

      410 - Исчез
      Веб-сервер отвечает этой ошибкой, когда запрошенный ресурс больше не доступен на сервере, не будет снова доступен и адрес пересылки неизвестен.Эта ошибка похожа на ошибку 404, но ошибка 410 является постоянной.

      411 - Требуемая длина
      Этот код ошибки означает, что сервер отказывается принять запрос без определенной длины содержимого. Клиент должен повторить запрос, добавив допустимое поле заголовка длины содержимого, содержащее длину тела сообщения в сообщении запроса.

      412 - Ошибка предварительного условия
      Веб-сервер отвечает этой ошибкой, когда предварительное условие, указанное в одном или нескольких полях заголовка запроса, было оценено как ложное при проверке на сервере.Этот код ответа позволяет клиенту помещать предварительные условия в метаинформацию текущего ресурса (данные поля заголовка) и, таким образом, предотвращать применение запрошенного метода к ресурсу, отличному от предполагаемого.

      413 - Слишком большой объект запроса
      Сервер отказывается обрабатывать запрос, потому что объект запроса больше, чем сервер хочет или может обработать. Сервер может закрыть соединение, чтобы клиент не мог продолжить запрос.Что считается «слишком большим», частично зависит от выполняемой операции. Например, запрос на загрузку очень большого файла (с помощью метода HTTP PUT) может столкнуться с ограничением размера загружаемого файла, установленным веб-сервером.

      414 - слишком длинный URL-адрес запроса
      Веб-сервер отвечает этой ошибкой, когда он отказывается обслуживать запрос, потому что URL-адрес запроса длиннее, чем сервер желает или может интерпретировать. Это редкое состояние может возникнуть только тогда, когда клиент неправильно преобразовал запрос POST в запрос GET с длинной информацией запроса, когда клиент спустился в «черную дыру» URL-адреса перенаправления (например.g., префикс перенаправленного URL-адреса, который указывает на суффикс самого себя), или когда сервер подвергается атаке со стороны клиента, пытающегося использовать бреши в безопасности, имеющиеся на некоторых серверах, с использованием буферов фиксированной длины для чтения или управления URL-адресом запроса. Обычно веб-серверы устанавливают довольно большие ограничения на длину подлинных URL-адресов, например до 2048 или 4096 знаков. Если длинный URL-адрес действителен и вы получаете 414 ошибок, возможно, потребуется перенастроить веб-сервер, чтобы разрешить такие URL-адреса.

      415 - Неподдерживаемый тип носителя
      Сервер отказывается обслуживать запрос, потому что объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода.

      416 - Запрошенный диапазон не выполняется
      Сервер обычно возвращает ответ с кодом состояния 416, если запрос включал поле заголовка запроса диапазона, и ни одно из значений спецификатора диапазона в этом поле не перекрывает текущий экстент выбранного ресурса, и запрос не включает в себя If- Поле заголовка запроса диапазона. Например, если ресурс представляет собой файл изображения и имеет 1000 байтов, а запрошенный диапазон составляет 500-1500, то это не может быть выполнено.

      417 - Ожидание не выполнено
      Веб-сервер отвечает этим кодом состояния, когда ожидание, указанное в поле заголовка запроса Expect, не может быть выполнено этим сервером, или, если сервер является прокси-сервером и имеет четкое свидетельство того, что запрос не может быть выполнен следующим: хоп-сервер.