Api код ошибки 400

As a complementary, for those who might meet the same issue as mine, I’m using $.ajax to post form data to server and I also got the 400 error at first.

Assume I have a javascript variable,

var formData = {
    "name":"Gearon",
    "hobby":"Be different"
    }; 

Do not use variable formData directly as the value of key data like below:

$.ajax({
    type: "post",
    dataType: "json",
    url: "http://localhost/user/add",
    contentType: "application/json",
    data: formData,
    success: function(data, textStatus){
        alert("Data: " + data + "nStatus: " + status); 
    }
});

Instead, use JSON.stringify to encapsulate the formData as below:

$.ajax({
    type: "post",
    dataType: "json",
    url: "http://localhost/user/add",
    contentType: "application/json",
    data: JSON.stringify(formData),
    success: function(data, textStatus){
        alert("Data: " + data + "nStatus: " + status); 
    }
});

Anyway, as others have illustrated, the error is because the server could not recognize the request cause malformed syntax, I’m just raising a instance at practice. Hope it would be helpful to someone.

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

В этом материале поговорим об ошибке 400 Bad Request. Почему она появляется и как ее исправить. 

Чуть подробнее об ошибке 400

Как и другие коды, начинающиеся на четверку, 400 Bad Request говорит о том, что возникла проблема на стороне пользователя. Зачастую сервер отправляет ее, когда появившаяся неисправность не подходит больше ни под одну категорию ошибок. 

Стоит запомнить — код 400 напрямую связан с клиентом (браузером, к примеру) и намекает на то, что отправленный запрос со стороны пользователя приводит к сбою еще до того, как его обработает сервер (вернее, так считает сам сервер). 

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Из-за чего всплывает Bad Request?

Есть 4 повода для возникновения ошибки сервера 400 Bad Request при попытке зайти на сайт:

  1. Некорректно настроенные HTTP-заголовки в запросе со стороны клиента. Некоторые приложения и сайты мониторят заголовки на предмет наличия в них чего-нибудь подозрительного. Если ваш запрос не соответствует ожиданиям сервера, то высока вероятность появления ошибки 400 (но это не всегда вина пользователя).
  2. Такой же сбой появляется, если клиент пытается загрузить на сервер файл слишком большого размера. Это происходит, потому что на большинстве сайтов есть ограничения по размеру загружаемых данных. Причем ограничение может быть как в 2 гигабайта, так и в 600 килобайт.
  3. Еще ошибка 400 появляется, когда пользователь пытается получить доступ к несуществующей странице. То есть в браузер банально ввели ссылку с опечаткой, некорректным доменом или поддоменом.
  4. Устаревшие или измененные куки-файлы. Сервер может воспринять подмену куки-файлов как попытку атаковать или воспользоваться дырой в безопасности. Поэтому такие запросы сходу блокируются.

Читайте также

Ошибка сервера 401

Ошибка 502 Bad Gateway Error

Исправляем ошибку 400 Bad Request на стороне клиента

Так как ошибка 400 в 99 случаев из 100 возникает на стороне клиента, начнем с соответствующих методов. Проверим все элементы, участвующие в передаче запроса со стороны клиента (браузера).

Проверяем адрес сайта

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

А еще стоит поискать запрашиваемую страницу через поисковик, встроенный в сайт. Есть вероятность, что конкретная страница куда-то переехала, но сервер не может показать подходящий HTTP-код в духе 404 Not Found. Если, конечно, сам сайт работает. 

Сбрасываем параметры браузера

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

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

В зависимости от браузера процесс удаления куки-файлов может немного отличаться. В Chrome это работает так:

  • Открываем настройки браузера. 
  • Переходим в раздел «Конфиденциальность и безопасность».
  • Выбираем «Файлы cookie и другие данные».
  • Нажимаем на кнопку «Удалить все».Удаление кукис в Google Chrome

Для чистки cookies можно использовать стороннюю программу в духе CCleaner или CleanMyPC.

Загружаем файл подходящего размера

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

Устраняем проблемы, связанные с Windows и сторонним софтом

Помимо браузера, на работу сети могут влиять другие программные продукты (экраны, защищающие от «непонятных подключений»). И вирусы. Да и сама Windows может стать проблемой. Почти любой ее компонент. Поэтому надо бы проделать следующее:

  • Повторно установить NET.Framework. Желательно перед этим удалить предыдущую версию.
  • Установить какой-нибудь приличный антивирус (а лучше два) и запустить глубокую проверку систему. Возможно, подключению и входу на ресурс мешает вредоносная программа.
  • Если у вас уже установлен антивирус, то, наоборот, попробуйте его отключить. Иногда встроенные в них экраны проверки подключений блокируют работу браузера целиком или отдельных страниц. Лучше выдать браузеру больше прав на выполнение своих задач или установить антивирус, который более лояльно относится к установленному на компьютере софту.
  • Еще надо поменять параметры брандмауэра. Его можно разыскать в панели управления Windows. Там надо добавить в список исключений ваш браузер. Тогда брандмауэр не будет мешать подключению к запрашиваемому сайту.
  • Почистить Windows от программного мусора. Можно пройтись приложением CCleaner. 
  • Обновить драйверы для сетевых устройств. 
  • Обновить Windows или просканировать систему на наличие погрешностей в системных компонентах.

Ищем проблему на стороне сервера

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

Проверяем требования к HTTP-заголовкам

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

Удаляем свежие обновления и плагины

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

Главное, перед этим сделать резервную копию данных. И перед установкой обновлений тоже стоило бы.

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

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

Исправляем ошибки в коде и скриптах

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

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

На этом все. Основные причины появления 400 Bad Request разобрали. Как ее лечить — тоже. Теперь дело за вами. Пользуйтесь полученной информацией, чтобы больше не пришлось мучиться в попытках зайти на нужный ресурс.

400 Bad Request Error: What It Is and How to Fix It

May 5, 2022 3:28:28 PM |
400 Bad Request Error: What It Is and How to Fix It

An in-depth explanation of what a 400 Bad Request Error response code is, including tips to help you resolve this error in your own application.

The 400 Bad Request Error is an HTTP response status code indicating that the server was unable to process the request sent by the client due to invalid syntax. As with the dozens of potential HTTP response codes, receiving a 400 error while accessing your own application can be both frustrating and challenging to fix. 

Such HTTP response codes represent the complex relationship between the client, a web application, a web server, and often multiple third-party web services. As you can imagine, determining the cause of a 400 error can be difficult, even within a controlled development environment.

Throughout this article, we’ll examine the 400 Bad Request error by digging into whether the root cause is on the local client or remote server. We’ll also go over a few tips and tricks to help you diagnose and debug your own application if it’s reporting a 400 error for some reason. 

Lastly, we’ll explore a handful of the most common content management systems (CMSs) that are in use today and how these systems can cause an unexpected 400 Bad Request Error.

Server- or Client-Side?

All HTTP response status codes that are in the 4xx category are considered client error responses. These types of messages contrast with errors in the 5xx category, such as the 504 Gateway Timeout Error we looked at last week, which are considered server error responses

With that in mind, the appearance of a 400 error doesn’t necessarily mean the issue has something to do with the client (the web browser or device).

Oftentimes, if you’re trying to diagnose an issue within your own application, you can immediately ignore most client-side code and components. This might include HTML, cascading style sheets (CSS), client-side JavaScript, and so forth. This doesn’t apply solely to websites, either. Many smartphone apps using a modern-looking user interface are powered by a normal web application behind the scenes. 

On the other hand, a 400 Bad Request Error indicates that the request sent by the client was invalid for one reason or another. It’s entirely possible the issue is from the client-side. Your client may be trying to send a file that’s too big, the request could be malformed in some way, the request HTTP headers could be invalid, and so forth. We’ll explore some of these scenarios (and potential solutions) down below. 

Be aware that, even though a 400 error is considered a client error response, it doesn’t inherently mean we can rule out either the client or the server as the root of the problem. In these scenarios, the server is still the network object that is producing the 400 Bad Request Error and returning it as the HTTP response code to the client. It could also be that the client is causing the issue in some way.

Start With a Thorough Application Backup

It is critical that you perform a full backup of your application, database, and so forth, before attempting any fixes or changes to the system. Even better, if you have the capability, create a complete copy of the application onto a secondary staging server that isn’t “live” or available to the public. This will give you a clean testing ground to test all potential fixes to resolve the issue, without threatening the security or sanctity of your live application.

Diagnosing a 400 Bad Request Error

A 400 Bad Request Error indicates that the server (remote computer) is unable (or refuses) to process the request sent by the client (web browser). There are several scenarios in which a 400 Bad Request Error could appear in an application, but below are the most likely causes:

  • The client may be sending deceptive request routing information. Some web applications/web servers look for custom HTTP headers to process requests and verify the client isn’t attempting anything malicious. If an expected custom HTTP header is missing or invalid, a 400 error is a likely result.
  • The client may be uploading a file that is too large. Most web servers or applications have an explicit file size limit that prevents files that are too big from being uploaded. This is to prevent bandwidth clogging.
  • The client is accessing an invalid URL. If the client is sending a request to an invalid URL — particularly one that is malformed via improper characters — this could result in an http error 400.
  • The client is using an invalid or expired local cookie. Again, this could be malicious or accidental. It’s possible that a local cookie in the web browser is identifying you via a session cookie. If this particular session token matches the session token from another request from a different client, the server/application may see this as a malicious act and produce a 400 Bad Request Error code.

Troubleshooting on the Client-Side

Since the 400 Bad Request Error is a client error response code, it’s best to start by troubleshooting any potential client-side issues that could be causing this error. 

Here are a handful of tips to try on the browser or device that is giving you http error 400 issues.

Check the Requested URL

As mentioned, the most common cause of a 400 Bad Request is simply inputting an incorrect URL. 

Domain names (e.g. airbrake.io) are case-insensitive. This means that this mixed case link to AirBrAKe.IO works just as well as the normal, lowercase version of airbrake.io

However, path, query, or fragment portions that appear after the domain name, are quite often case-sensitive. The exception is if the application/server configuration is explicitly designed to pre-process all URLs as lowercase before execution.

Check the URL for improper special characters that don’t belong. If the server received a malformed URL, it’s likely to produce a 400 Bad Request Error response.

Clear Relevant Cookies

As discussed above, one potential cause of a 400 Error is an invalid or duplicate local cookie. HTTP cookies are tiny pieces of data stored on your local device that is used by websites and applications to “remember” information about a particular browser and/or device. 

Most modern web apps take advantage of cookies to store user- or browser-specific data, identifying the client and allowing future visits to be faster and easier.

However, a cookie that stores session information about your particular user account or device could be conflicting with another session token from another user, giving one (or both of you) a 400 Bad Request Error. 

In most cases, you only need to concern yourself with cookies that are relevant to the website or application causing the problem. 

Cookies are stored based on the web application’s domain name, so you can remove only those cookies that match the website domain (e.g. airbrake.io). This will allow you to keep all other cookies intact. However, if you are unfamiliar with manually removing certain cookies, it’s much easier and safer to clear all cookies at once.

Clearing cookies can be accomplished in different ways, depending on the browser you’re using. Here’s a list of how-to’s on clearing cookies depending on the browser: 

  • Google Chrome
  • Internet Explorer
  • Microsoft Edge
  • Mozilla Firefox
  • Safari

Upload a Smaller File

If you’re experiencing a 400 error while uploading a file, try testing with a different, much smaller file to see if this resolves the error. This includes file “uploads” that don’t actually come from your local computer. Even files sent from other computers are considered “uploads” from the perspective of the web server running your application.

Log Out and Log In

The last client-side step to try is to log out and then log back in if the application requires user authentication. If you’ve recently cleared the browser cookies, this should usually log you out automatically the next time you try to load the page. At that point, feel free to just log back in at this point and see if things are working once again. 

For most web applications, logging out and logging back in will force the local session token to be recreated.

Before Checking Servers, Debug Your CMS

If you’re running common software packages on the server that is responding with a 400 Error, you may want to start looking into the stability and functionality of those platforms first. 

The most common content management systems (CMS) — like WordPress, Joomla!, and Drupal — are typically well-tested out of the box. Unfortunately, once you start making changes to the underlying extensions or PHP code, it’s all too easy to cause an unforeseen issue that results in a 400 Bad Request error. 

Rollback Recent Upgrades

If you recently updated your CMS just before the 400 Error appeared, you may want to consider rolling back to the previous version you had installed. 

Similarly, any extensions or modules that you may have recently upgraded can also cause server-side issues. Try reverting upgrades to a previous version. For assistance with this task, simply Google “downgrade [PLATFORM_NAME]” and follow along. 

In some cases, certain CMSs don’t provide a version downgrade capability. This happens when the CMS creators consider the base application, along with each new version released, to be stable and bug-free. This is typically the case for the more popular platforms. 

Uninstall New Extensions, Modules, or Plugins

Extensions, modules, or plugins serve the same purpose across every system: improving the capabilities and features of your CMS. 

But be warned: extensions can take full control of the system and make virtually any changes, whether it be to the PHP code, HTML, CSS, JavaScript, or database. As such, it’s wise to uninstall any new extensions that may have recently been added. 

Check for Unexpected Database Changes

It’s worth noting that if you uninstall an extension through the CMS dashboard, this doesn’t guarantee that changes made by the extension will fully revert. This is particularly true for many WordPress extensions, which are given carte blanche within the application. This often includes full access rights to the database. 

There are scenarios where an extension may modify database records that don’t “belong” to the extension itself but are instead created and managed by other extensions (or even the base CMS itself). In those scenarios, the extension may not know how to revert alterations to database records, so it will ignore such things during uninstallation. 

Diagnosing such problems can be tricky, but I’ve personally encountered such scenarios multiple times. If you’re reasonably convinced an extension is a likely culprit for the 400 error, open the database and manually look through tables and records that were likely modified by the extension.

Troubleshooting on the Server-Side

If you aren’t running a CMS application or you’re confident the 400 Bad Request error isn’t related to that — it’s time to check for server-side issues. 

Check for Invalid HTTP Headers

It’s possible that the 400 error you’re seeing from your own application is a result of missing or invalid custom HTTP headers. In such cases, you may be able to analyze the HTTP headers that are sent on the server-side and determine if they are invalid or unexpected in some way.

Look Through the Logs

Nearly every web application keeps some form of server-side logs. Application logs contain the history of what the application did, such as which pages were requested, servers it connected to, database results it provides, and so forth. 

Server logs are related to the actual hardware that is running the application. These often provide details about the health and status of all connected services, or just the server itself. Google “logs [PLATFORM_NAME]” if you’re using a CMS, or “logs [PROGRAMMING_LANGUAGE]” and “logs [OPERATING_SYSTEM]” if you’re running a custom application, to get more information on finding the logs in question.

Debug Your Application Code or Scripts

If all else fails, it may be a problem with some custom code within your application. Try to diagnose where the issue may be coming from by manually debugging your application, along with parsing through application and server logs. 

Ideally, you should make a copy of the entire application on a local development machine and debug it step by step to find out exactly what caused the 400 Bad Request error.

Or you can find the bug in moments using Airbrake Error Monitoring. 

Airbrake’s error monitoring software provides real-time error monitoring and automatic exception reporting for all your development projects. Airbrake’s state-of-the-art web dashboard ensures you receive round-the-clock status updates on your application’s health and error rates.

Check out Airbrake’s error monitoring software today and see for yourself why so many of the world’s best engineering teams use Airbrake to revolutionize their exception handling practices!

Note: We published this post in November 2021 and recently updated it in May 2022.

REST API использует строку состояния в HTTP ответе (статус ответа), чтобы информировать Клиентов о результате запроса.

Вообще HTTP определяет 40 стандартных кодов состояния (статусов ответа), которые делятся на пять категорий. Ниже выделены только те коды состояния, которые часто используются в REST API.

Категория Описание
1xx: Информация В этот класс содержит заголовки информирующие о процессе передачи. Это обычно предварительный ответ, состоящий только из Status-Line и опциональных заголовков, и завершается пустой строкой. Нет обязательных заголовков. Серверы НЕ ДОЛЖНЫ посылать 1xx ответы HTTP/1.0 клиентам.
2xx: Успех Этот класс кодов состояния указывает, что запрос клиента был успешно получен, понят, и принят.
3xx: Перенаправление Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI. Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям.
4xx: Ошибка клиента Класс кодов 4xx предназначен для указания ошибок со стороны клиента.
5xx: Ошибка сервера Коды ответов, начинающиеся с «5» указывают на случаи, когда сервер знает, что произошла ошибка или он не может обработать запрос.

Коды состояний в REST

Звездочкой * помечены популярные (часто используемые) коды ответов.

200 * (OK)

Запрос выполнен успешно. Информация, возвращаемая с ответом зависит от метода, используемого в запросе, например при:

  • GET Получен объект, соответствующий запрошенному ресурсу.
  • HEAD Получены поля заголовков, соответствующие запрошенному ресурсу, тело ответа пустое.
  • POST Запрошенное действие выполнено.

201 * (Created — Создано)

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

Ссылка (URL) на новый ресурс может быть в теле ответа или в поле заголовка ответа Location.

Сервер должен создать ресурс перед тем как вернуть 201 статус. Если это невозможно сделать сразу, тогда сервер должен ответить кодом 202 (Accepted).

202 (Accepted — Принято)

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

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

Сущность, возвращаемая с этим ответом, должна содержать указание на текущее состояние запроса и указатель на монитор состояния (расположение очереди заданий) или некоторую оценку того, когда пользователь может ожидать выполнения запроса.

203 (Non-Authoritative Information — Неавторитетная информация)

Предоставленная информация взята не из оригинального источника (а, например, из кэша, который мог устареть, или из резервной копии, которая могла потерять актуальность). Этот факт отражен в заголовке ответа и подтверждается этим кодом. Предоставленная информация может совпадать, а может и не совпадать с оригинальными данными.

204 * (No Content — Нет контента)

Код состояния 204 обычно отправляется в ответ на запрос PUT, POST или DELETE, когда REST API отказывается отправлять обратно любое сообщение о состоянии проделанной работы.

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

Ответ 204 не должен содержать тело сообщения и, таким образом, всегда завершается первой пустой строкой после полей заголовка.

205 — (Reset Content — Сброшенное содержимое)

Сервер успешно обработал запрос и обязывает клиента сбросить введенные пользователем данные. В ответе не должно передаваться никаких данных (в теле ответа). Обычно применяется для возврата в начальное состояние формы ввода данных на клиенте.

206 — (Partial Content — Частичное содержимое)

Сервер выполнил часть GET запроса ресурса. Запрос ДОЛЖЕН был содержать поле заголовка Range (секция 14.35), который указывает на желаемый диапазон и МОГ содержать поле заголовка If-Range (секция 14.27), который делает запрос условным.

Запрос ДОЛЖЕН содержать следующие поля заголовка:

  • Либо поле Content-Range (секция 14.16), который показывает диапазон, включённый в этот запрос, либо Content-Type со значением multipart/byteranges, включающими в себя поля Content-Range для каждой части. Если в заголовке запроса есть поле Content-Length, его значение ДОЛЖНО совпадать с фактическим количеством октетов, переданных в теле сообщения.
  • Date
  • ETag и/или Content-Location, если ранее был получен ответ 200 на такой же запрос.
  • Expires, Cache-Control, и/или Vary, если значение поля изменилось с момента отправления последнего такого же запроса

Если ответ 206 — это результат выполнения условного запроса, который использовал строгий кэш-валидатор (подробнее в секции 13.3.3), в ответ НЕ СЛЕДУЕТ включать какие-либо другие заголовки сущности. Если такой ответ — результат выполнения запроса If-Range, который использовал «слабый» валидатор, то ответ НЕ ДОЛЖЕН содержать другие заголовки сущности; это предотвращает несоответствие между закэшированными телами сущностей и обновлёнными заголовками. В противном случае ответ ДОЛЖЕН содержать все заголовки сущностей, которые вернули статус 200 (OK) на тот же запрос.

Кэш НЕ ДОЛЖЕН объединять ответ 206 с другими ранее закэшированными данными, если поле ETag или Last-Modified в точности не совпадают (подробнее в секции 16.5.4)

Кэш, который не поддерживает заголовки Range и Content-Range НЕ ДОЛЖЕН кэшировать ответы 206 (Partial).

300 — (Multiple Choices — Несколько вариантов)

По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю.

Если это не запрос HEAD, ответ ДОЛЖЕН включать объект, содержащий список характеристик и адресов, из которого пользователь или агент пользователя может выбрать один наиболее подходящий. Формат объекта определяется по типу данных приведённых в Content-Type поля заголовка. В зависимости от формата и возможностей агента пользователя, выбор наиболее подходящего варианта может выполняться автоматически. Однако эта спецификация не определяет никакого стандарта для автоматического выбора.

Если у сервера есть предпочтительный выбор представления, он ДОЛЖЕН включить конкретный URI для этого представления в поле Location; агент пользователя МОЖЕТ использовать заголовок Location для автоматического перенаправления к предложенному ресурсу. Этот запрос может быть закэширован, если явно не было указано иного.

301 (Moved Permanently — Перемещено навсегда)

Код перенаправления. Указывает, что модель ресурсов REST API была сильно изменена и теперь имеет новый URL. Rest API должен указать новый URI в заголовке ответа Location, и все будущие запросы должны быть направлены на указанный URI.

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

302 (Found — Найдено)

Является распространенным способом выполнить перенаправление на другой URL. HTTP-ответ с этим кодом должен дополнительно предоставит URL-адрес куда перенаправлять в поле заголовка Location. Агенту пользователя (например, браузеру) предлагается в ответе с этим кодом сделать второй запрос на новый URL.

Многие браузеры реализовали этот код таким образом, что нарушили стандарт. Они начали изменять Тип исходного запроса, например с POST на GET. Коды состояния 303 и 307 были добавлены для серверов, которые хотят однозначно определить, какая реакция ожидается от клиента.

303 (See Other — Смотрите другое)

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

Код состояния 303 позволяет REST API указать ссылку на ресурс, не заставляя клиента загружать ответ. Вместо этого клиент может отправить GET запрос на URL указанный в заголовке Location.

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

304 * (Not Modified — Не изменен)

Этот код состояния похож на 204 (Нет контента), так как тело ответа должно быть пустым. Ключевое различие состоит в том, что 204 используется, когда нет ничего для отправки в теле, тогда как 304 используется, когда ресурс не был изменен с версии, указанной заголовками запроса If-Modified-Since или If-None-Match.

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

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

305 — (Use Proxy — Используйте прокси)

Доступ к запрошенному ресурсу ДОЛЖЕН быть осуществлен через прокси-сервер, указанный в поле Location. Поле Location предоставляет URI прокси. Ожидается, что получатель повторит этот запрос с помощью прокси. Ответ 305 может генерироваться ТОЛЬКО серверами-источниками.

Заметьте: в спецификации RFC 2068 однозначно не сказано, что ответ 305 предназначен для перенаправления единственного запроса, и что он должен генерироваться только сервером-источником. Упущение этих ограничений вызвало ряд значительных последствий для безопасности.

Многие HTTP клиенты (такие, как Mozilla и Internet Explorer) обрабатывают этот статус некорректно прежде всего из соображений безопасности.

307 (Temporary Redirect — Временный редирект)

Ответ 307 указывает, что rest API не будет обрабатывать запрос клиента. Вместо этого клиент должен повторно отправить запрос на URL, указанный в заголовке Location. Однако в будущих запросах клиент по-прежнему должен использоваться исходный URL.

Rest API может использовать этот код состояния для назначения временного URL запрашиваемому ресурсу.

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

308 — (Permanent Redirect — Постоянное перенаправление) (experimental)

Нужно повторить запрос на другой адрес без изменения применяемого метода.

Этот и все последующие запросы нужно повторить на другой URI. 307 и 308 (как предложено) Схож в поведении с 302 и 301, но не требуют замены HTTP метода. Таким образом, например, отправку формы на «постоянно перенаправленный» ресурс можно продолжать без проблем.

400 * (Bad Request — Плохой запрос)

Это общий статус ошибки на стороне Клиента. Используется, когда никакой другой код ошибки 4xx не уместен. Ошибки могут быть как неправильный синтаксис запроса, неверные параметры запроса, запросы вводящие в заблуждение или маршрутизатор и т.д.

Клиент не должен повторять точно такой же запрос.

401 * (Unauthorized — Неавторизован)

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

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

402 — (Payment Required — Требуется оплата)

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

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

403 * (Forbidden — Запрещено)

Ошибка 403 указывает, что rest API отказывается выполнять запрос клиента, т.е. Клиент не имеет необходимых разрешений для доступа. Ответ 403 не является случаем, когда нужна авторизация (для ошибки авторизации используется код 401).

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

404 * (Not Found — Не найдено)

Указывает, что rest API не может сопоставить URL клиента с ресурсом, но этот URL может быть доступен в будущем. Последующие запросы клиента допустимы.

404 не указывает, является ли состояние временным или постоянным. Для указания постоянного состояния используется код 410 (Gone — Пропал). 410 использоваться, если сервер знает, что старый ресурс постоянно недоступен и более не имеет адреса.

405 (Method Not Allowed — Метод не разрешен)

API выдает ошибку 405, когда клиент пытался использовать HTTP метод, который недопустим для ресурса. Например, указан метод PUT, но такого метода у ресурса нет.

Ответ 405 должен включать Заголовок Allow, в котором перечислены поддерживаемые HTTP методы, например, Allow: GET, POST.

406 (Not Acceptable — Неприемлемый)

API не может генерировать предпочитаемые клиентом типы данных, которые указаны в заголовке запроса Accept. Например, запрос клиента на данные в формате application/xml получит ответ 406, если API умеет отдавать данные только в формате application/json.

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

407 — (Proxy Authentication Required — Требуется прокси-аутентификация)

Ответ аналогичен коду 401, за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере.

Пользователь должен сначала авторизоваться через прокси. Прокси-сервер должен вернуть Proxy-Authenticate заголовок, содержащий запрос ресурса. Клиент может повторить запрос вместе с Proxy-Authenticate заголовком. Появился в HTTP/1.1.

408 — (Request Timeout — Таймаут запроса)

Время ожидания сервером передачи от клиента истекло. Клиент не предоставил запрос за то время, пока сервер был готов его принят. Клиент МОЖЕТ повторить запрос без изменений в любое время.

Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать, например, из-за повреждения компакт-диска или потери связи с другим компьютером в локальной сети. Пока клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны, чтобы дать возможность другим клиентам сделать запрос.

409 * (Conflict — Конфликт)

Запрос нельзя обработать из-за конфликта в текущем состоянии ресурса. Этот код разрешается использовать только в тех случаях, когда ожидается, что пользователь может самостоятельно разрешить этот конфликт и повторить запрос. В тело ответа СЛЕДУЕТ включить достаточное количество информации для того, чтобы пользователь смог понять причину конфликта. В идеале ответ должен содержать такую информацию, которая поможет пользователю или его агенту исправить проблему. Однако это не всегда возможно и это не обязательно.

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

410 — (Gone — Исчез)

Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии. Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404. Появился в HTTP/1.1.

411 — (Length Required — Требуется длина)

Для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение.

412 — (Precondition Failed — Предварительное условие не выполнено)

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

Когда клиент указывает rest API выполнять запрос только при выполнении определенных условий, а API не может выполнить запрос при таких условиях, то возвращается ответ 412.

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

413 — (Request Entity Too Large — Сущность запроса слишком большая)

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

Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос.

414 — (Request-URI Too Long — Запрос-URI Слишком длинный)

Сервер не может обработать запрос из-за слишком длинного указанного URL. Эту редкую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST, когда клиент попадает в «чёрную дыру» перенаправлений (например, когда префикс URI указывает на своё же окончание), или когда сервер подвергается атаке со стороны клиента, который пытается использовать дыры в безопасности, которые встречаются на серверах с фиксированной длиной буфера для чтения или обработки Request-URI.

415 (Unsupported Media Type — Неподдерживаемый медиа тип)

Сообщение об ошибке 415 указывает, что API не может обработать предоставленный клиентом Тип медиа, как указано в заголовке запроса Content-Type.

Например, запрос клиента содержит данные в формате application/xml, а API готов обработать только application/json. В этом случае клиент получит ответ 415.

Например, клиент загружает изображение как image/svg+xml, но сервер требует, чтобы изображения использовали другой формат.

428 — (Precondition Required — Требуется предварительное условие)

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

Его типичное использование — избежать проблемы «потерянного обновления», когда клиент ПОЛУЧАЕТ состояние ресурса, изменяет его и ОТПРАВЛЯЕТ обратно на сервер, когда тем временем третья сторона изменила состояние на сервере, что привело к конфликту. Требуя, чтобы запросы были условными, сервер может гарантировать, что клиенты работают с правильными копиями.

Ответы с этим кодом состояния ДОЛЖНЫ объяснять, как повторно отправить запрос.

429 — (Too Many Requests — Слишком много запросов)

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

Представления ответа ДОЛЖНЫ включать подробности, объясняющие условие, и МОГУТ включать заголовок Retry-After, указывающий, как долго ждать, прежде чем делать новый запрос.

431 — (Request Header Fields Too Large — Слишком большие поля заголовка запроса)

Код состояния 431 указывает на то, что сервер не желает обрабатывать запрос, поскольку его поля заголовка слишком велики. Запрос МОЖЕТ быть отправлен повторно после уменьшения размера полей заголовка запроса.

Его можно использовать как в случае, когда совокупность полей заголовка запроса слишком велика, так и в случае неисправности одного поля заголовка. В последнем случае представление ответа ДОЛЖНО указывать, какое поле заголовка было слишком большим.

444 — (No Response — Нет ответа) (Nginx)

Код ответа Nginx. Сервер не вернул информацию и закрыл соединение. (полезно в качестве сдерживающего фактора для вредоносных программ)

451 — (Unavailable For Legal Reasons — Недоступен по юридическим причинам)

Доступ к ресурсу закрыт по юридическим причинам. Наиболее близким из существующих является код 403 Forbidden (сервер понял запрос, но отказывается его обработать). Однако в случае цензуры, особенно когда это требование к провайдерам заблокировать доступ к сайту, сервер никак не мог понять запроса — он его даже не получил. Совершенно точно подходит другой код: 305 Use Proxy. Однако такое использование этого кода может не понравиться цензорам. Было предложено несколько вариантов для нового кода, включая «112 Emergency. Censorship in action» и «460 Blocked by Repressive Regime»

500 * (Internal Server Error — Внутренняя ошибка сервера)

Общий ответ при ошибке в коде. Универсальное сообщение о внутренней ошибке сервера, когда никакое более определенное сообщение не подходит.

Большинство веб-платформ автоматически отвечают этим кодом состояния, когда при выполнении кода обработчика запроса возникла ошибка.

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

501 (Not Implemented — Не реализован)

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

Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405.

502 — (Bad Gateway — Плохой шлюз)

Сервер, выступая в роли шлюза или прокси-сервера, получил некорректный ответ от вышестоящего сервера, к которому он обратился. Появился в HTTP/1.0.

503 — (Service Unavailable — Служба недоступна)

Сервер не может обработать запрос из-за временной перегрузки или технических работ. Это временное состояние, из которого сервер выйдет через какое-то время. Если это время известно, то его МОЖНО передать в заголовке Retry-After.

504 — (Gateway Timeout — Таймаут шлюза)

Сервер, в роли шлюза или прокси-сервера, не дождался в рамках установленного таймаута ответа от вышестоящего сервера текущего запроса.

505 — (HTTP Version Not Supported — Версия HTTP не поддерживается)

Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.

510 — (Not Extended — Не расширен)

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

Источники и более подробная информация:

  • https://restapitutorial.ru/httpstatuscodes.html
  • https://www.restapitutorial.com/httpstatuscodes.html
  • https://restfulapi.net/http-status-codes/
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/428

  1. 400 Bad Request
  2. 403 Forbidden
  3. 404 Not Found
  4. 405 Method Not Allowed
  5. 406 Not Acceptable
  6. 409 Conflict
  7. 410 Gone
  8. 413 Payload Too Large
  9. 415 Unsupported Media Type
  10. 422 Unprocessable Entity
  11. 429 Too Many Requests
  12. The status of verifying the right to manage the site (ApiVerificationState)
  13. Rights verification methods (ApiVerificationType)
  14. Explicit methods of rights verification (ApiExplicitVerificationType)
  15. Reasons for refusal to verify site management rights (ApiVerificationFailReason)
  16. Source of the Sitemap file (ApiSitemapSource)
  17. Type of Sitemap file (ApiSitemapType)
  18. Site indexing status (ApiHostDataStatus)
  19. Indexing indicators (ApiIndexingIndicator)
  20. Query indicators (ApiQueryIndicator)
  21. Query sorting order (ApiQueryOrderField)
  22. Device type indicators (ApiDeviceTypeIndicator)
  23. Indicators of external links (ApiExternalLinksIndicator)
  24. Internal link indicators (ApiInternalLinksBrokenIndicator)
  25. Reindexing request status (RecrawlStatusEnum)
  26. Issue categories on the site (SiteProblemSeverityEnum)
  27. State of the issue (ApiSiteProblemState)
  28. Type of site issue (ApiSiteProblemTypeEnum)
  29. HTTP status codes received by the robot during indexing (IndexingStatusEnum)
  30. Site page status in search results (ApiSearchEventEnum)
  31. Changes to important pages in the search (ApiImportantUrlChangeIndicator)
  32. Reasons for excluding the page from search results (ApiExcludedUrlStatus)
  33. RSS feed upload modes (PagesLoadMode)
  34. RSS feed upload mode filter (TaskTypeFilter)
  35. Status of the RSS feed upload task (LoadStatus)

ENTITY_VALIDATION_ERROR

The request body validation failed.

{
  "error_code": "ENTITY_VALIDATION_ERROR",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

FIELD_VALIDATION_ERROR

Invalid parameter passed.

{
  "error_code": "FIELD_VALIDATION_ERROR",
  "error_message": "explicit error message",
  "field_name": "some string",
  "field_value": "some string",
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
field_name Field.
field_value Value.
error_message Error message.

INVALID_URL

Wrong URL was passed.

{
  "error_code": "INVALID_URL",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

ACCESS_FORBIDDEN

The action is unavailable because the application doesn’t have the necessary permissions.

{
  "error_code": "ACCESS_FORBIDDEN",
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
error_message Error message.

INVALID_OAUTH_TOKEN

The OAuth token is missing or invalid.

{
  "error_code": "INVALID_OAUTH_TOKEN",
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
error_message Error message.

INVALID_USER_ID

The ID of the user who issued the token differs from the one specified in the request. In the examples below, {user_id} shows the correct uid of the OAuth token owner.

{
  "error_code": "INVALID_USER_ID",
  "available_user_id": 1,
  "error_message": "Invalid user id. {user_id} should be used."
}

Parameter Description
error_code Error code.
available_user_id ID of the user who allowed access.
error_message Error message.

LICENCE_NOT_ACCEPTED

You have to accept the User agreement.

{
  "error_code": "LICENCE_NOT_ACCEPTED",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

HOSTS_LIMIT_EXCEEDED

The number of sites in the user’s site list exceeded the limit (the current limit is 1703).

{
 "error_code": "HOSTS_LIMIT_EXCEEDED",
 "limit": 1,
 "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
limit The limit on the number of added sites.
error_message Error message.

RESOURCE_NOT_FOUND

The resource at the requested path does not exist.

{
  "error_code": "RESOURCE_NOT_FOUND",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

HOST_NOT_INDEXED

The site isn’t indexed yet.

{
  "error_code": "HOST_NOT_INDEXED", //errorCode. 
  "host_id": "http:ya.ru:80", //id хоста. host id. 
  "error_message": "some string" //Error message. 
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
error_message Error message.

HOST_NOT_LOADED

The site data isn’t uploaded to Yandex.Webmaster yet.

{
  "error_code": "HOST_NOT_LOADED",
  "host_id": "http:ya.ru:80",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
error_message Error message.

HOST_NOT_VERIFIED

Site management rights are not verified.

{
  "error_code": "HOST_NOT_VERIFIED",
  "host_id": "http:ya.ru:80",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
error_message Error message.

HOST_NOT_FOUND

The site is not in the list of the user’s sites.

{
  "error_code": "HOST_NOT_FOUND",
  "host_id": "http:ya.ru:80",
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
error_message Error message.

SITEMAP_NOT_FOUND

The Sitemap for the site wasn’t found.

{
  "error_code": "SITEMAP_NOT_FOUND",
  "host_id": "http:ya.ru:80",
  "sitemap_id": "c7-fe:80-c0",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
sitemap_id The Sitemap file ID.
error_message Error message.

SITEMAP_NOT_ADDED

The Sitemap file is missing.

{
  "error_code": "SITEMAP_NOT_ADDED",
  "host_id": "http:ya.ru:80",
  "sitemap_id": "c7-fe:80-c0",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
host_id ID of the requested site.
sitemap_id The Sitemap file ID.
error_message Error message.

TASK_NOT_FOUND

Failed to find a task with the specified ID.

{
  "error_code": "TASK_NOT_FOUND",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

QUERY_ID_NOT_FOUND

The specified search query ID does not exist.

{
  "error_code": "QUERY_ID_NOT_FOUND",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

The HTTP method is not supported for this resource.

{
  "error_code": "METHOD_NOT_ALLOWED",
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
error_message Error message.

The content types passed in the Accept header are not supported.

{
  "error_code": "CONTENT_TYPE_UNSUPPORTED",
  "acceptable_types": [
    "some string", ...
  ],
  "error_message": "explicit error message"
}

Parameter Description
error_code Error code.
acceptable_type List of supported content types.
error_message Error message.

URL_ALREADY_ADDED

The URL was already added for reindexing.

{
  "error_code": "URL_ALREADY_ADDED",
  "error_message": "some string"
}

Parameter Description
error_code Error code.
error_message Error message.

HOST_ALREADY_ADDED

The site with the specified address is already added to the user’s sites list.

{
  "error_code": "HOST_ALREADY_ADDED",
  "host_id": "http:ya.ru:80",
  "verified": false,
  "error_message": "some string"
}

<Data>
  <error_code>HOST_ALREADY_ADDED</error_code> 
  <host_id>http:ya.ru:80</host_id> 
  <verified>false</verified> 
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
host_id The site ID.
verified Indicates if the site rights are verified.
error_message Error message.

VERIFICATION_ALREADY_IN_PROGRESS

The rights verification process is in progress.

{
  "error_code": "VERIFICATION_ALREADY_IN_PROGRESS",
  "verification_type": "META_TAG",
  "error_message": "some string"
}

<Data>
  <error_code>VERIFICATION_ALREADY_IN_PROGRESS</error_code>  
  <verification_type>META_TAG</verification_type> 
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
verification_type The verification method being processed ( ApiExplicitVerificationType ).
error_message Error message.

TEXT_ALREADY_ADDED

The text you added earlier.

{
  "error_code": "TEXT_ALREADY_ADDED",
  "error_message": "some string"
}

<Data>
  <error_code>TEXT_ALREADY_ADDED</error_code>  
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
error_message Error message.

SITEMAP_ALREADY_ADDED

The Sitemap was already added.

{
  "error_code": "SITEMAP_ALREADY_ADDED",
  "sitemap_id": "c7-fe:80-c0",
  "error_message": "some string"
}

<Data>
  <error_code>SITEMAP_ALREADY_ADDED</error_code> 
  <sitemap_id>c7-fe:80-c0</sitemap_id>  
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
sitemap_id The Sitemap file ID.
error_message Error message.

Resource unavailable

{
  "error_code": "UPLOAD_ADDRESS_EXPIRED",
  "valid_until": "2016-01-01T00:00:00,000+0300",
  "error_message": "some string"
}

<Data>
  <error_code>UPLOAD_ADDRESS_EXPIRED</error_code>
  <valid_until>2016-01-01T00:00:00,000+0300</valid_until>
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
valid_until The date and time until which the URL for task creation is available.
error_message Error message.

The file size exceeds the limits.

{
  "error_code": "REQUEST_ENTITY_TOO_LARGE",
  "error_message": "some string"
}

<Data>
  <error_code>REQUEST_ENTITY_TOO_LARGE</error_code>
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
error_message Error message.

CONTENT_TYPE_UNSUPPORTED

The content type in the request is not supported.

{
  "error_code": "CONTENT_TYPE_UNSUPPORTED",
  "supported_content_types": [
    "some string", ...
  ],
  "error_message": "explicit error message"
}

<Data>
    <error_code>CONTENT_TYPE_UNSUPPORTED</error_code>
    <supported_content_type>some string</supported_content_type>
    ...
    <error_message>explicit error message</error_message>
</Data>

Parameter Description
error_code Error code.
supported_content_type List of supported content types.
error_message Error message.

CONTENT_ENCODING_UNSUPPORTED

The request encoding type is not supported.

{
  "error_code": "CONTENT_ENCODING_UNSUPPORTED",
  "supported_content_encodings": [
    "some string"
  ],
  "error_message": "some string"
}

<Data>
  <error_code>CONTENT_ENCODING_UNSUPPORTED</error_code> 
  <supported_content_encoding>some string</supported_content_encoding>  
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
supported_content_encoding List of supported encoding types.
error_message Error message.

The passed text is too short or too long.

{
  "error_code": "TEXT_LENGTH_CONSTRAINTS_VIOLATION",
  "max_length": 1,
  "min_length": 1,
  "actual_length": 1,
  "error_message": "explicit error message"
}

<Data>
  <error_code>TEXT_LENGTH_CONSTRAINTS_VIOLATION</error_code>
    <max_length>1</max_length>
    <min_length>1</min_length>
    <actual_length>1</actual_length>
  <error_message>explicit error message</error_message>
</Data>

Parameter Description
error_code Error code.
max_length Maximum length.
min_length Minimum length.
actual_length The length of the text in the request.
error_message Error message.

QUOTA_EXCEEDED

The daily quota for requests was exceeded.

{
  "error_code": "QUOTA_EXCEEDED",
  "daily_quota": 1,
  "exceeded_until": "2016-01-01T00:00:00,000+0300",
  "error_message": "some string"
}

<Data>
  <error_code>QUOTA_EXCEEDED</error_code>  
  <daily_quota>1</daily_quota>  
  <exceeded_until>2016-01-01T00:00:00,000+0300</exceeded_until>  
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
daily_quota The maximum number of requests per day.
exceeded_until Time when the new quota starts.
error_message Error message.

TOO_MANY_REQUESTS_ERROR

Too many requests sent.

{
  "error_code": "TOO_MANY_REQUESTS_ERROR",
  "daily_quota": 1,
  "exceeded_until": "2016-01-01T00:00:00,000+0300",
  "error_message": "some string"
}

<Data>
  <error_code>TOO_MANY_REQUESTS_ERROR</error_code>  
  <daily_quota>1</daily_quota>  
  <exceeded_until>2016-01-01T00:00:00,000+0300</exceeded_until>  
  <error_message>some string</error_message>
</Data>

Parameter Description
error_code Error code.
daily_quota The maximum number of requests per day.
exceeded_until Time when the new quota starts.
error_message Error message.
Status Description
NONE Verification wasn’t completed and rights are not confirmed.
VERIFIED The rights are verified.
IN_PROGRESS The rights verification is in progress.
VERIFICATION_FAILED Verification was performed but rights are not confirmed.
INTERNAL_ERROR An unexpected error occurred when verifying the rights.
Verification method Whether a verification check can be requested Description
AUTO No Automatic rights verification (deprecated; only for *.narod.ru sites).
DELEGATED No Rights were delegated.
DNS Yes Verifying rights with the DNS record.
HTML_FILE Yes Placing an HTML file in the site’s root directory.
META_TAG Yes Adding a meta tag to the site’s home page header.
PDD No Rights verification via Yandex.Mail for Domains.
TXT_FILE No Placing a text file in the site’s root directory.
WHOIS Yes

Verifying data with information provided by the WHOIS service.

This method works only for second-level domains (such as example.com).

Verification method Whether a verification check can be requested Description
DNS Yes Verifying rights with the DNS record.
HTML_FILE Yes Placing an HTML file in the site’s root directory.
META_TAG Yes Adding a meta tag to the site’s home page header.
WHOIS Yes

Verifying data with information provided by the WHOIS service.

This method works only for second-level domains (such as example.com).

Reason for refusal Description
DELEGATION CANCELLED Delegation of site management rights was canceled.
DNS_RECORD_NOT_FOUND The specified DNS record doesn’t exist.
META_TAG_NOT_FOUND The meta tag is missing in the site’s home page header.
PDD_VERIFICATION_CANCELLED Verification of site management rights via Yandex.Mail for Domain isn’t allowed for this site.
WHOIS_EMAIL_NOT_FOUND The specified email address is missing in the WHOIS record for this site.
WRONG_HTML_PAGE_CONTENT The HTML file content is set incorrectly.
Source Description
ROBOTS_TXT Sitemap is specified in the site’s robots.txt file.
WEBMASTER The user added the Sitemap in Yandex.Webmaster.
INDEX_SITEMAP Sitemap found in another (index) Sitemap file.
Type Description
SITEMAP Normal Sitemap file that contains the URLs of site pages.
INDEX_SITEMAP The Sitemap index file that contains the URLs of other Sitemap files.
Source Description
NOT_INDEXED The site isn’t indexed yet.
NOT_LOADED The site data isn’t uploaded to Yandex.Webmaster yet.
OK The site is indexed. The data is available in Yandex.Webmaster.
Indicator Description
SEARCHABLE Pages in the search.
DOWNLOADED Downloaded pages.
DOWNLOADED_2XX Pages downloaded with a 2XX code.
DOWNLOADED_3XX Pages downloaded with a 3XX code.
DOWNLOADED_4XX Pages downloaded with a 4XX code.
DOWNLOADED_5XX Pages downloaded with a 5XX code.
FAILED_TO_DOWNLOAD Failed to download.
EXCLUDED Excluded pages.
EXCLUDED_DISALLOWED_BY_USER Excluded at the request of the resource owner (4XX codes or prohibited in robots.txt).
EXCLUDED_SITE_ERROR Excluded due to a site error.
EXCLUDED_NOT_SUPPORTED Excluded as not supported by the Yandex robots.
Indicator Description
TOTAL_SHOWS The number of displays.
TOTAL_CLICKS The number of clicks.
AVG_SHOW_POSITION The average position of the display.
AVG_CLICK_POSITION Average click position.
Indicator Description
TOTAL_SHOWS The number of displays.
TOTAL_CLICKS The number of clicks.
Indicator Description
ALL All device types.
DESKTOP Computers.
MOBILE_AND_TABLET Mobile phones and tablets.
MOBILE Mobile phones.
TABLET Tablets.

If the request does not specify a device type indicator, the default value is ALL.

Indicator Description
LINKS_TOTAL_COUNT The total number of known external links to the host.
Indicator Description
SITE_ERROR The total number of known external links to the site.
DISALLOWED_BY_USER The page doesn’t exist or is prohibited from indexing.
UNSUPPORTED_BY_ROBOT Not supported by the main Search indexing robot.
Indicator Description
IN_PROGRESS The request is being processed.
DONE The robot crawled the URL
FAILED The robot failed to crawl the page. Make sure it is accessible to the robot and the server responds fast enough.
Indicator Description Note
FATAL Fatal errors. Checks the server connection, site availability for indexing, security and compliance with Yandex guidelines.

This may lead to excluding individual pages or the entire site from search results.

We recommend monitoring these errors and fixing them as soon as possible.

CRITICAL Critical issues. Checks the presence and validity of the SSL certificate, the number of broken internal links, and the server response time.
POSSIBLE_PROBLEM Possible issues. Checks the Sitemap and robots.txt file validity, settings for displaying non-existent files, the number of duplicate pages, the presence of redirects, annoying ads, and so on. May affect the quality and speed of site indexing.
RECOMMENDATION Recommendations. Usually includes suggestions for improving the site’s ranking in search results. Use them to improve the site’s ranking in search results.
Indicator Description
PRESENT Present on the site.
ABSENT Missing.
UNDEFINED Not enough data to determine if there are issues.
Indicator Description
FATAL
DISALLOWED_IN_ROBOTS The site is prohibited for indexing in the robots.txt file.
DNS_ERROR Failed to connect to the server due to a DNS error.
MAIN_PAGE_ERROR The site’s home page returns an error.
THREATS Security threats or issues were detected.
CRITICAL
SLOW_AVG_RESPONSE_TIME Slow server response. For more information, see this Help section.
SSL_CERTIFICATE_ERROR Invalid SSL certificate settings. For more information, see this Help section.
POSSIBLE_PROBLEM
BAD_ADVERTISEMENT Ad formats do not comply with IAB Russia recommendations.
DOCUMENTS_MISSING_DESCRIPTION Many pages do not have the Description meta tag.
DOCUMENTS_MISSING_TITLE The title element is missing on many pages.
ERROR_IN_ROBOTS_TXT Errors in the robots.txt file.
ERRORS_IN_SITEMAPS Errors found in the Sitemap file.
MAIN_MIRROR_IS_NOT_HTTPS The site’s main mirror doesn’t use the HTTPS protocol We recommend using the HTTPS protocol. For more information and instructions on switching protocols, see the Help.
MAIN_PAGE_REDIRECTS The main page redirects to another site.
NO_METRIKA_COUNTER_CRAWL_ENABLED Site crawling using Yandex.Metrica tags isn’t enabled. For more information about site indexing using the Yandex.Metrica tag, see the Help.
NO_ROBOTS_TXT The robots.txt file wasn’t found.
NO_SITEMAPS The Sitemap files used by the robot are missing.
NO_SITEMAP_MODIFICATIONS The Sitemap files haven’t been updated for a long time.
NON_WORKING_VIDEO The robot failed to index videos on the site.
SOFT_404 The display of non-existent files and pages is configured incorrectly.
TOO_MANY_DOMAINS_ON_SEARCH The site subdomains are found in the search results.
TOO_MANY_PAGE_DUPLICATES Too many duplicate pages.
RECOMMENDATION
FAVICON_PROBLEM The favicon file was not found. The robot failed to load an image file to display in the browser tab and next to the site name in the search results. For more information about this error and how to fix it, see the help section.
INCOMPLETE_SPRAV_COMPANY_PROFILE Yandex.Directory contains incomplete information about the organization.
NO_CHATS Chats on Search are missing.
NO_METRIKA_COUNTER Yandex.Metrica tag error
NO_REGIONS The site region isn’t set.
NOT_IN_SPRAV The site isn’t registered in Yandex.Directory.
NOT_MOBILE_FRIENDLY The site isn’t optimized for mobile devices.
Indicator Description

HTTP_2XX

HTTP_3XX

HTTP_4XX

HTTP_5XX

For more information about statuses, see the help section.
OTHER Unsupported HTTP code, connection error, or other error.
Indicator Description
APPEARED_IN_SEARCH The page appeared in search results.
REMOVED_FROM_SEARCH The page was removed from search results.
Indicator Description
INDEXING_HTTP_CODE The HTTP response code received by the robot when crawling the page changed.
SEARCH_STATUS The page status in the search changed (it was added or removed).
TITLE The page title changed.
DESCRIPTION The Description meta tag content changed.
Indicator Description
NOTHING_FOUND The robot doesn’t know about the page, or it was unavailable for a long time. Submit the page for reindexing.
HOST_ERROR When trying to access the site, the robot could not connect to the server. Check the server response and make sure that the Yandex robot isn’t blocked by the hosting provider. The site is indexed automatically when it becomes available for the robot. For information about the user agent robots, see the help section.
REDIRECT_NOTSEARCHABLE The page redirects to another page. The target page is indexed (RedirectTarget). Check the indexing of the target page.
HTTP_ERROR An error occurred when accessing the “HTTP error” page. Check the server response. If the problem persists, contact your site administrator or the server administrator. If the page is already available, submit it for reindexing.
NOT_CANONICAL The page is indexed by the canonical URL specified in the rel=»canonical» attribute in its source code. Correct or delete the attribute if it is specified incorrectly. The robot will track the changes automatically.
NOT_MAIN_MIRROR The page belongs to a secondary site mirror, so it was excluded from the search.
PARSER_ERROR When trying to access the page, the robot couldn’t get its content. Check the server response or the presence of prohibiting HTML elements. If the problem persists, contact your site administrator or the server administrator. If the page is already available, send it for reindexing.
ROBOTS_HOST_ERROR Site indexing is prohibited in the robots.txt file. The robot will automatically start crawling the page when the site becomes available for indexing.
ROBOTS_URL_ERROR Page indexing is prohibited in the robots.txt file. The robot will automatically crawl the page when it becomes available for indexing.
DUPLICATE The page duplicates a site page that is already in the search. For more information, see the help section.
LOW_QUALITY The page has been removed from search results due to low quality as determined by a special algorithm. If the algorithm finds the page relevant to users’ search queries, it will appear in the search automatically.
CLEAN_PARAMS The page was excluded from the search after the robot processed the Clean-param directive. To get the page indexed, edit the robots.txt file.
NO_INDEX The page is excluded because the robots meta tag has the noindex value.
OTHER

The robot does not have updated data for the page.

Check the server response or the presence of prohibiting HTML elements.

If the page can’t be accessed by the robot, contact the administrator of your site or server. If the page is already available, send it for reindexing.

Indicator Description
DEBUG Debugging the Turbo page display.
PRODUCTION Turbo pages publishing.
Indicator Description
DEBUG Debugging the Turbo page display.
PRODUCTION Turbo pages publishing.
ALL Getting information about both task types.
Indicator Description
PROCESSING The file is checked for errors.
OK The file is loaded and it doesn’t contain errors.
WARNING XML elements in the file aren’t supported by Yandex or are specified incorrectly.
ERROR The file contains errors (for example, duplicate XML elements).

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Apex ошибка engine error audio
  • Apple music ошибка 66681
  • Apple music 22950 ошибка
  • Apple mobile device usb driver ошибка

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии