Разное

Ошибка при выполнении запроса api: 500 » » api/v3/auth/cert/ 11.4.11.84

Содержание

Устранение неполадок в приложениях веб-API2, работающих в Visual Studio, и ошибках на рабочем сервере IIS



  • Чтение занимает 7 мин

В этой статье

В этом документе объясняется, как устранять неполадки в приложениях веб-API2, развернутых на рабочем сервере IIS.This doc explains how to troubleshoot Web API2 apps that are deployed to a production IIS server. В нем рассматриваются распространенные ошибки HTTP 405 и 501.It addresses common HTTP 405 and 501 errors.

Программное обеспечение, используемое в этом руководствеSoftware used in this tutorial

В приложениях веб-API обычно используется несколько глаголов HTTP: GET, POST, размещение, удаление и иногда исправление. Web API apps typically use several HTTP verbs: GET, POST, PUT, DELETE, and sometimes PATCH. С другой стороны, разработчики могут столкнуться с ситуациями, когда эти глаголы реализуются другим модулем IIS на рабочем сервере IIS, что приводит к ситуации, когда контроллер веб-API, который правильно работает в Visual Studio или на сервере разработки, будет Возвращает ошибку HTTP 405 при развертывании на рабочем сервере IIS.That being said, developers may run into situations where those verbs are implemented by another IIS module on their production IIS server, which leads to a situation where a Web API controller that works correctly in Visual Studio or on a development server will return an HTTP 405 error when it is deployed to a production IIS server.

Причины ошибок HTTP 405What causes HTTP 405 errors

Первый шаг к изучению способов устранения ошибок HTTP 405 состоит в том, чтобы понять, что действительно означает ошибка HTTP 405.The first step toward learning how to troubleshoot HTTP 405 errors is to understand what an HTTP 405 error actually means. Основным управляющим документом для HTTP является RFC 2616, который определяет код состояния HTTP 405 как Недопустимый метод, и далее описывает этот код состояния как ситуацию, когда «метод, указанный в строке запроса, не разрешен для ресурса, определяемого запросом URI.» другими словами, команда HTTP не разрешена для конкретного URL-адреса, запрошенного клиентом HTTP.The primary governing document for HTTP is RFC 2616, which defines the HTTP 405 status code as Method Not Allowed, and further describes this status code as a situation where «the method specified in the Request-Line is not allowed for the resource identified by the Request-URI.» In other words, the HTTP verb is not allowed for the specific URL that an HTTP client has requested.

В качестве краткого анализа ниже приведены некоторые из наиболее используемых методов HTTP, как определено в RFC 2616, RFC 4918 и RFC 5789.As a brief review, here are several of the most-used HTTP methods as defined in RFC 2616, RFC 4918, and RFC 5789:

Метод HTTPHTTP Method DescriptionDescription
GETGET Этот метод используется для получения данных из универсального кода ресурса (URI), который, вероятно, является наиболее используемым методом HTTP. This method is used to retrieve data from a URI, and it probably the most-used HTTP method.
HEADHEAD Этот метод во многом аналогичен методу GET, за исключением того, что он фактически не извлекает данные из URI запроса. он просто извлекает состояние HTTP.This method is much like the GET method, except that it doesn’t actually retrieve the data from the request URI — it simply retrieves the HTTP status.
POSTPOST Этот метод обычно используется для отправки новых данных в универсальный код ресурса (URI). POST часто используется для отправки данных формы.This method is typically used to send new data to the URI; POST is often used to submit form data.
PUTPUT Этот метод обычно используется для отправки необработанных данных в универсальный код ресурса (URI). РАЗМЕЩЕНИЕ часто используется для отправки данных JSON или XML в приложения веб-API. This method is typically used to send raw data to the URI; PUT is often used to submit JSON or XML data to Web API applications.
DELETEDELETE Этот метод используется для удаления данных из URI.This method is used to remove data from a URI.
OPTIONSOPTIONS Этот метод обычно используется для получения списка методов HTTP, которые поддерживаются для URI.This method is typically used to retrieve the list of HTTP methods that are supported for a URI.
ПЕРЕМЕЩЕНИЕ КОПИРОВАНИЯCOPY MOVE Эти два метода используются с WebDAV, и их назначение говорят сами за себя.These two methods are used with WebDAV, and their purpose is self-explanatory.
MKCOLMKCOL Этот метод используется с WebDAV и используется для создания коллекции (например, каталога) по указанному универсальному коду ресурса (URI). This method is used with WebDAV, and it is used to create a collection (e.g. a directory) at the specified URI.
PROPPATCH PROPFINDPROPFIND PROPPATCH Эти два метода используются с WebDAV и используются для запроса или задания свойств URI.These two methods are used with WebDAV, and they are used to query or set properties for a URI.
РАЗБЛОКИРОВАТЬ БЛОКИРОВКУLOCK UNLOCK Эти два метода используются с WebDAV и используются для блокировки или разблокировки ресурса, определяемого URI запроса при создании.These two methods are used with WebDAV, and they are used to lock/unlock the resource identified by the request URI when authoring.
PATCHPATCH Этот метод используется для изменения существующего HTTP-ресурса.This method is used to modify an existing HTTP resource.

Если один из этих методов HTTP настроен для использования на сервере, сервер будет отвечать с состоянием HTTP и другими данными, подходящими для запроса. When one of these HTTP methods is configured for use on the server, the server will respond with the HTTP status and other data that is appropriate for the request. (Например, метод GET может получить ответ HTTP 200 ОК , а метод размещения может получить ответ, созданный HTTP 201.)(For example, a GET method might receive an HTTP 200 OK response, and a PUT method might receive an HTTP 201 Created response.)

Если метод HTTP не настроен для использования на сервере, сервер будет отвечать с ошибкой HTTP 501, которая не реализована .If the HTTP method is not configured for use on the server, the server will respond with an HTTP 501 Not Implemented error.

Однако если метод HTTP настроен для использования на сервере, но он был отключен для данного универсального кода ресурса (URI), сервер отправит сообщение об ошибке » метод http 405 не разрешен «. However, when an HTTP method is configured for use on the server, but it has been disabled for a given URI, the server will respond with an HTTP 405 Method Not Allowed error.

Пример ошибки HTTP 405Example HTTP 405 error

Следующий пример HTTP-запроса и ответа иллюстрирует ситуацию, когда клиент HTTP пытается разместить значение в веб-API на веб-сервере, а сервер возвращает ошибку HTTP, указывающую, что метод размещения не разрешен:The following example HTTP request and response illustrate a situation where an HTTP client is attempting to PUT value to a Web API app on a web server, and the server returns an HTTP error which states that the PUT method is not allowed:

HTTP-запрос:HTTP Request:

PUT /api/values/1 HTTP/1.1
Content-type: application/json
Host: localhost
Accept: */*
Content-Length: 12

"Some Value"

HTTP-ответ:HTTP Response:

HTTP/1.1 405 Method Not Allowed
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8. 0
X-Powered-By: ASP.NET
Date: Wed, 15 May 2013 02:38:57 GMT
Content-Length: 72

{"Message":"The requested resource does not support http method 'PUT'."}

В этом примере HTTP-клиент отправил допустимый запрос JSON к URL-адресу для приложения Web API на сервере, но сервер вернул сообщение об ошибке HTTP 405, которое указывает на то, что метод размещения не разрешен для URL-адреса.In this example, the HTTP client sent a valid JSON request to the URL for a Web API application on a web server, but the server returned an HTTP 405 error message which indicates that the PUT method was not allowed for the URL. В отличие от этого, если URI запроса не соответствует маршруту для приложения веб-API, сервер возвращал ошибку HTTP 404 не найден .In contrast, if the request URI did not match a route for the Web API application, the server would return an HTTP 404 Not Found error.

Устранение ошибок HTTP 405Resolve HTTP 405 errors

Существует несколько причин, по которым конкретная команда HTTP может быть запрещена, но существует один основной сценарий, который является ведущей причиной этой ошибки в IIS: для одной и той же команды или метода определено несколько обработчиков, и один из обработчиков блокирует ожидаемый обработчик от обработки запроса. There are several reasons why a specific HTTP verb may not be allowed, but there is one primary scenario that is the leading cause of this error in IIS: multiple handlers are defined for the same verb/method, and one of the handlers is blocking the expected handler from processing the request. С помощью объяснения IIS обрабатывает обработчики от первых к последним, основываясь на записях обработчика заказов в файлах ApplicationHost. config и Web. config , где для обработки запроса будут использоваться первые совпадающие сочетания пути, команды, ресурса и т. д.By way of explanation, IIS processes handlers from first to last based on the order handler entries in the applicationHost.config and web.config files, where the first matching combination of path, verb, resource, etc., will be used to handle the request.

Следующий пример является выдержкой из файла ApplicationHost. config для сервера IIS, который ВОЗВРАЩАЛ ошибку HTTP 405 при использовании метода размещения для отправки данных в приложение веб-API. The following example is an excerpt from an applicationHost.config file for an IIS server that was returning an HTTP 405 error when using the PUT method to submit data to a Web API application. В этом отрывке определено несколько обработчиков HTTP, и каждый обработчик имеет свой набор методов HTTP, для которых он настроен — последняя запись в списке является статическим обработчиком содержимого, который является обработчиком по умолчанию, который используется после того, как другие обработчики имели Чанк д для проверки запроса:In this excerpt, several HTTP handlers are defined, and each handler has a different set of HTTP methods for which it is configured — the last entry in the list is the static content handler, which is the default handler that is used after the other handlers have had a chance to examine the request:

<handlers accessPolicy="Read, Script">
   <add name="WebDAV"
      path="*"
      verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK"
      modules="WebDAVModule"
      resourceType="Unspecified"
      requireAccess="None" />
   <add name="ISAPI-dll"
      path="*. dll"
      verb="*"
      modules="IsapiModule"
      resourceType="File"
      requireAccess="Execute"
      allowPathInfo="true" />
   <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
      path="*."
      verb="GET,HEAD,POST,DEBUG"
      modules="IsapiModule"
      scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
      preCondition="classicMode,runtimeVersionv4.0,bitness64"
      responseBufferLimit="0" />

   <!-- Additional handlers will be defined here. -->

   <add name="StaticFile"
      path="*"
      verb="*"
      modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"
      resourceType="Either"
      requireAccess="Read" />
</handlers>

В предыдущем примере обработчик WebDAV и обработчик URL-адресов без расширений для ASP.NET (который используется для веб-API) четко определены для отдельных списков методов HTTP.In the preceding example, the WebDAV handler and the Extension-less URL Handler for ASP.NET (which is used for Web API) are clearly defined for separate lists of HTTP methods. Обратите внимание, что обработчик DLL ISAPI настроен для всех методов HTTP, хотя такая конфигурация не обязательно приведет к ошибке.Note that the ISAPI DLL handler is configured for all HTTP methods, although this configuration will not necessarily cause an error. Однако такие параметры конфигурации следует учитывать при устранении ошибок HTTP 405.However, configuration settings like this need to be considered when troubleshooting HTTP 405 errors.

В предыдущем примере обработчик DLL ISAPI не является проблемой. на самом деле, проблема не была определена в файле ApplicationHost. config для сервера IIS — проблема была вызвана записью, которая была создана в файле Web. config при создании приложения веб-API в Visual Studio.In the preceding example, the ISAPI DLL handler was not the problem; in fact, the problem was not defined in the applicationHost.config file for the IIS server — the problem was caused by an entry that was made in the web.config file when the Web API application was created in Visual Studio. Следующий фрагмент из файла Web. config приложения показывает расположение проблемы:The following excerpt from the application’s web.config file shows the location of the problem:

<handlers accessPolicy="Read, Script">
   <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
   <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
      path="*."
      verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
      modules="IsapiModule"
      scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
      preCondition="classicMode,runtimeVersionv4.0,bitness64"
      responseBufferLimit="0" />
</handlers>

В этом отрывке обработчик URL-адресов без расширений для ASP.NET переопределен для включения дополнительных методов HTTP, которые будут использоваться с приложением веб-API.In this excerpt, the Extension-less URL Handler for ASP.NET is redefined to include additional HTTP methods that will be used with the Web API application. Однако, поскольку для обработчика WebDAV определен аналогичный набор методов HTTP, возникает конфликт.However, since a similar set of HTTP methods is defined for the WebDAV handler, a conflict occurs. В этом конкретном случае обработчик WebDAV определяется и загружается службами IIS, даже если для веб-сайта, включающего приложение веб-API, отключен протокол WebDAV.In this specific case, the WebDAV handler is defined and loaded by IIS, even though WebDAV is disabled for the website that includes the Web API application. Во время обработки запроса HTTP-размещения IIS вызывает модуль WebDAV, так как он определен для команды размещения.During the processing of an HTTP PUT request, IIS calls the WebDAV module since it is defined for the PUT verb. При вызове модуля WebDAV проверяет его конфигурацию и видит, что он отключен, поэтому он возвращает ошибку «метод HTTP 405 не разрешен » для любого запроса, напоминающего запрос WebDAV.When the WebDAV module is called, it checks its configuration and sees that it is disabled, so it will return an HTTP 405 Method Not Allowed error for any request that resembles a WebDAV request. Чтобы устранить эту проблему, следует удалить WebDAV из списка модулей HTTP для веб-сайта, на котором определено приложение веб-API.To resolve this issue, you should remove WebDAV from the list of HTTP modules for the website where your Web API application is defined. В следующем примере показано, как это может выглядеть:The following example shows what that might look like:

<handlers accessPolicy="Read, Script">
   <remove name="WebDAV" />
   <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
   <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
      path="*."
      verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
      modules="IsapiModule"
      scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
      preCondition="classicMode,runtimeVersionv4.0,bitness64"
      responseBufferLimit="0" />
</handlers>

Этот сценарий часто встречается после публикации приложения из среды разработки в рабочей среде IIS. это происходит потому, что список обработчиков и модулей различается в средах разработки и рабочей среде.This scenario is often encountered after an application is published from a development environment to an IIS production environment, and this occurs because the list of handlers/modules is different between your development and production environments. Например, если вы используете Visual Studio 2012 или более поздней версии для разработки приложения веб-API, IIS Express является веб-сервером по умолчанию для тестирования.For example, if you are using Visual Studio 2012 or later to develop a Web API application, IIS Express is the default web server for testing. Этот веб-сервер разработки — это уменьшенная версия полной функциональности IIS, которая поставляется в серверном продукте, и этот веб-сервер разработки содержит несколько изменений, которые были добавлены в сценарии разработки.This development web server is a scaled-down version of the full IIS functionality that ships in a server product, and this development web server contains a few changes that were added for development scenarios. Например, модуль WebDAV часто устанавливается на рабочем веб-сервере, на котором работает полная версия IIS, хотя он может не использоваться.For example, the WebDAV module is often installed on a production web server that is running the full version of IIS, although it may not be in use. Версия для разработки IIS (IIS Express) устанавливает модуль WebDAV, но записи для модуля WebDAV намеренно заносятся в комментарий, поэтому модуль WebDAV никогда не загружается на IIS Express, если только вы специально не измените конфигурацию IIS Express параметры для добавления функции WebDAV к установке IIS Express.The development version of IIS, (IIS Express), installs the WebDAV module, but the entries for the WebDAV module are intentionally commented out, so the WebDAV module is never loaded on IIS Express unless you specifically alter your IIS Express configuration settings to add WebDAV functionality to your IIS Express installation. В результате веб-приложение может правильно работать на компьютере разработчика, но при публикации приложения веб-API на рабочем веб-сервере IIS могут возникать ошибки HTTP 405.As a result, your web application may work correctly on your development computer, but you may encounter HTTP 405 errors when you publish your Web API application to your production IIS web server.

Ошибки HTTP 501HTTP 501 errors

  • Указывает, что на сервере не реализована конкретная функциональность.Indicates the specific functionality has not been implemented on the server.
  • Обычно это означает, что в параметрах IIS не определен обработчик, который соответствует HTTP-запросу:Typically means that there is no handler defined in your IIS settings which matches the HTTP request:
    • Возможно, это свидетельствует о том, что что-то неправильно установлено в службах IIS илиProbably indicates that something was not installed correctly on IIS or
    • Что-то изменило параметры IIS, так что не определены обработчики, поддерживающие конкретный метод HTTP.Something has modified your IIS settings so that there are no handlers defined that support the specific HTTP method.

Чтобы устранить эту проблему, необходимо переустановить любое приложение, которое пытается использовать метод HTTP, для которого у него нет соответствующих определений модуля или обработчика.To resolve that issue, you would need to reinstall any application that is attempting to use an HTTP method for which it has no corresponding module or handler definitions.

СводкаSummary

Ошибки HTTP 405 возникают, если метод HTTP не разрешен веб-сервером для запрошенного URL-адреса.HTTP 405 errors are caused when an HTTP method is not allowed by a web server for a requested URL. Это условие часто возникает, когда определенный обработчик определен для определенной команды, и этот обработчик переопределяет обработчик, который ожидает обработки запроса.This condition is often seen when a particular handler has been defined for a specific verb, and that handler is overriding the handler that you expect to process the request.



Список возможных ошибок — API Топвизор
















Код ошибки Описание Возможные причины
Другие ошибки
0 Нетипизированные ошибки Описание ошибки см. в ответе API
503 Функции API временно недоступны На сервере ведутся технические работы
429 Превышен лимит одновременных обращений к API

  • С одного IP поступило более 5 одновременных запросов
  • Для одного User-Id поступило более 5 одновременных запросов
10001 Внутренняя ошибка
Ошибки авторизации
53 Ошибка авторизации

  • Авторизационный токен не указан или указан неверно
    (заголовок Authorization)
  • ID пользователя не указан или указан неверно
    (заголовок User-Id)
  • Токен не соответствует ID пользователя
54 Нет прав

  • Нет прав на просмотр запрашиваемых данных объекта
  • Нет прав на редактирование указанного объекта
Неверное обращение к API
1000 Неверное имя запроса
Адрес запроса не соответствует формату:

/v2/ajax/_operator_/_service_[/_method_]
1001 Неверно указан оператор
1002 Неверно указан сервис
1003 Неверно указан метод

  • Указанный метод отсутствует в указанном сервисе
  • Указанный метод не соответствует указанному оператору
1004 Неверная версия API
Неверное значение поля
2000 Ошибка в формате передаваемых данных
2001 Отсутствует обязательный параметр
2002 Указан параметр с неверным типом

  • Вместо числа передан другой тип
  • Вместо объекта передан другой тип
2003 Указан параметр с неверным значением
2004 Неверно указаны параметры фильтра fitlers

  • fitlers имеет неверную стркутуру
  • Элемент fitlers имеет неверный оператор
  • Элемент fitlers имеет неверный операнд
2005 Неверно указаны параметры пагинации

  • limits или offset являются отрицательными
  • limits превышает 10000

Как сделать запрос к API?

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

Предполагается, что работа с API организована на внешнем сервере (НЕ на сервере платформы), который отправляет к серверу платформы запросы определенного типа. Для удобства в этой статье будет рассмотрена отправка запросов при помощи приложения Postman. В качестве альтернативы можно использовать Advanced REST Client.

Все доступные запросы в форматах XML и JSON описаны на api.insales.ru. Типовые запросы в формате XML с более подробным описанием можно найти на wiki.insales.ru.

  1. Ограничения
  2. Авторизация
  3. Общие принципы
  4. Примеры XML-запросов
  5. Примеры JSON-запросов
  6. Возможные коды ответов сервера

Ограничения

На платформе присутствует ограничение в 500 запросов к API в течение 5 минут. Время рассчитывается с момента первого запроса в серии. Количество выполненных запросов в текущем промежутке времени передается в HTTP-заголовке API-Usage-Limit (например, API-Usage-Limit: 1/500).

При достижении лимита доступ к API ограничивается до окончания текущих 5 минут. При этом в HTTP-заголовке Retry-After передается время в секундах до восстановления доступа.

Авторизация

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

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

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

Далее в статье мы будем использовать созданные логин (идентификатор) и пароль. Их можно указывать как в адресе запроса:

https://логин:пароль@shop-47483-27.myinsales.ru/admin/orders.xml

Так и в виде HTTP-заголовка Authorization:

Authorization: Basic ZGlnaXRhbC1nb29kczpjNTFjOTA3MDdhMTNjZTNmZmYyMTNhZmJiNWNkMTI3MA==

Вместо shop-47483-27.myinsales.ru необходимо использовать технический или обычный домен вашего магазина. Его можно взять, например, из строки «Пример URL» около выданного ключа доступа.

Общие принципы

API InSales принимает POST, GET, PUT и DELETE-запросы в зависимости от выполняемого действия. Тип и адрес запроса для требуемого действия можно найти на api.insales.ru.

Текст самого запроса должен соответствовать формату XML или JSON. В зависимости от формата меняется адрес запроса и значение HTTP-заголовка Content-Type.

Для XML необходим Content-Type: application/xml

А для JSON — Content-Type: application/json

На скриншоте программы Postman показан выбранный тип запроса, адрес и заголовки. После нажатия кнопки Send появится ответ сервера InSales.

Примеры XML-запросов

Рассмотрим GET-запрос к товару с id 143570988. Такой запрос не требует передачи серверу каких-либо параметров. В качестве адреса необходимо указать https://логин:пароль@shop-47483-27.myinsales.ru/admin/products/143570988.xml

В ответ сервер пришлёт всю доступную информацию об этом товаре.

 

PUT-запрос служит для обновления данных выбранного объекта. Для обновления названия того же товара с id 143570988 потребуется отправить запрос с телом

<?xml version=»1.0″ encoding=»UTF-8″?>
<product>
<title>Новое название</title>
</product>

В ответ сервер пришлёт обновлённую информацию о товаре (в том числе новое название). Соответственно, в бэк-офисе также будет отображаться новое название товара. В ответе виден код 200, что означает успешное выполнение операции.

Примеры JSON-запросов

Запросы в формате JSON отличаются адресом и заголовком Content-Type.

GET-запрос отправляется на адрес https://логин:пароль@shop-47483-27.myinsales.ru/admin/products/143570988.json . Ответ, соответственно, также будет этом формате.

 

Тело PUT-запроса на обновление названия товара выглядит следующим образом:

{

    «product»: {

        «title»: «Новое название»

    }

}

Возможные коды ответов сервера

  • 200 — штатный ответ на операцию; означает, что никаких ошибок не возникло
  • 201 — в некоторых случаях при создании объектов может вернуться этот код; по смыслу не отличается от кода 200
  • 400 — некорректный HTTP-запрос, сервер не смог его обработать
  • 401 — не удалось авторизоваться (необходимо проверить логин и пароль)
  • 403 — нет прав для данной операции (необходимо проверить настройки прав для приложения)
  • 404 — запрашиваемый объект не найден (возможно, его уже удалили или указан неверный id объекта)
  • 500 — внутренняя ошибка сервера (возможно, вы некорректно сформировали запрос или что-то сломалось на нашей стороне; необходимо обратиться в тех поддержку)
  • 503 — превышен лимит запросов к API
  • 504 — сервер не смог обработать ваш запрос за 50 секунд и прервал его выполнение (возможно, вы пытаетесь получить слишком много данных за один запрос)

что это за ошибка и как ее исправить – База знаний Timeweb Community

Появление сообщения об ошибке 401 Unauthorized Error («отказ в доступе») при открытии страницы сайта означает неверную авторизацию или аутентификацию пользователя на стороне сервера при обращении к определенному url-адресу. Чаще всего она возникает при ошибочном вводе имени и/или пароля посетителем ресурса при входе в свой аккаунт. Другой причиной являются неправильные настройки, допущенные при администрировании web-ресурса. Данная ошибка отображается в браузере в виде отдельной страницы с соответствующим описанием. Некоторые разработчики интернет-ресурсов, в особенности крупных порталов, вводят собственную дополнительную кодировку данного сбоя:

  • 401 Unauthorized;
  • Authorization Required;
  • HTTP Error 401 – Ошибка авторизации.

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

Причины появления ошибки сервера 401 и способы ее устранения на стороне пользователя

При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:

  1. Идентификация – получение вашей учетной записи («identity») по username/login или email.
  2. Аутентификация («authentic») – проверка того, что вы знаете пароль от этой учетной записи.
  3. Авторизация – проверка вашей роли (статуса) в системе и решение о предоставлении доступа к запрошенной странице или ресурсу на определенных условиях.

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

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

  1. Проверьте в адресной строке правильность написания URL. Особенно это касается перехода на подстраницы сайта, требующие авторизации. Введите правильный адрес. Если переход на страницу осуществлялся после входа в аккаунт, разлогинитесь, вернитесь на главную страницу и произведите повторный вход с правильными учетными данными.
  2. При осуществлении входа с сохраненными данными пользователя и появлении ошибки сервера 401 проверьте их корректность в соответствующих настройках данного браузера. Возможно, авторизационные данные были вами изменены в другом браузере. Также можно очистить кэш, удалить cookies и повторить попытку входа. При удалении истории браузера или очистке кэша потребуется ручное введение логина и пароля для получения доступа. Если вы не помните пароль, пройдите процедуру восстановления, следуя инструкциям.
  3. Если вы считаете, что вводите правильные регистрационные данные, но не можете получить доступ к сайту, обратитесь к администратору ресурса. В этом случае лучше всего сделать скриншот проблемной страницы.
  4. Иногда блокировка происходит на стороне провайдера, что тоже приводит к отказу в доступе и появлению сообщения с кодировкой 401. Для проверки можно попробовать авторизоваться на том же ресурсе с альтернативного ip-адреса (например, используя VPN). При подтверждении блокировки трафика свяжитесь с провайдером и следуйте его инструкциям.

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

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

Устранение ошибки 401 администратором веб-ресурса 

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

  • Обращение в службу поддержки хостинга сайта. Как и в случае возникновения проблем с провайдером, лучше всего подробно описать последовательность действий, приведших к появлению ошибки 401, приложить скриншот.
  • При отсутствии проблем на стороне хостинг-провайдера можно внести следующие изменения в настройки сайта с помощью строки Disallow:/адрес проблемной страницы. Запретить индексацию страницам с ошибкой в «rоbоts.txt», после чего добавить в файл «.htассеss» строку такого типа:

Redirect 301 /oldpage.html http://site.com/newpage.html.

Где в поле /oldpage.html прописывается адрес проблемной страницы, а в http://site.com/newpage.html адрес страницы авторизации.

Таким образом вы перенаправите пользователей со всех страниц, которые выдают ошибку 401, на страницу начальной авторизации.

  • Если после выполнения предыдущих рекомендаций пользователи при попытках авторизации все равно видят ошибку 401, то найдите на сервере файл «php.ini» и увеличьте время жизни сессии, изменив значения следующих параметров: «session.gc_maxlifetime» и «session.cookie_lifetime» на 1440 и 0 соответственно.
  • Разработчики веб-ресурсов могут использовать более сложные методы авторизации и аутентификации доступа для создания дополнительной защиты по протоколу HTTP. Если устранить сбой простыми методами администрирования не удается, следует обратиться к специалистам, создававшим сайт, для внесения соответствующих изменений в код.

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

Дополнительная информация об ошибке с кодом 401

Веб-серверы под управлением Microsoft IIS могут предоставить дополнительные данные об ошибке 401 Unauthorized в виде второго ряда цифр:

  • 401, 1 – войти не удалось;
  • 401, 2 – ошибка входа в систему из-за конфигурации сервера;
  • 401, 3 – несанкционированный доступ из-за ACL на ресурс;
  • 401, 501 – доступ запрещен: слишком много запросов с одного и того же клиентского IP; ограничение динамического IP-адреса – достигнут предел одновременных запросов и т.д.

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

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

Как видим, появление ошибки авторизации 401 Unauthorized не является критичным для рядового посетителя сайта и чаще всего устраняется самыми простыми способами. В более сложной ситуации оказываются администраторы и владельцы интернет-ресурсов, но и они в 100% случаев разберутся с данным багом путем изменения настроек или корректировки html-кода с привлечением разработчика сайта. 

Коды состояний HTTP — (REST API → Базовые знания REST API)

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

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

Категория Описание
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 обычно используется для действий, которые занимают много времени для обработки и не могут быть выполнены сразу. Это означает, что запрос принят к обработке, но обработка не завершена.

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

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

меню

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

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

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

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

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.

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

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

меню

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

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

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

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

меню

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

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

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

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

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

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

меню

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.

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

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

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

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

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

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

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

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

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

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

Ответ API 500 — это общий ответ об ошибки на сервере, когда не подходит никакой другой код ошибки.

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

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

Источник

Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm

При обмене данными клиент-сервер в программе «1С Бухгалтерия» (обычно версий 8.3.хххх) оператор локального ПК может внезапно столкнуться с сообщением «Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm». Данная проблема обычно имеет программную природу, и вызвана некорректно написанным обновлением к данной программе. Ниже я разберу, что это за ошибка, каковы факторы её возникновения, и как её исправить.

Перевод и причины дисфункции

После текста сообщения об ошибке при обращении к /e1cib/logForm обычно следует описание причины её возникновения, которая может иметь различный характер (ошибка на сервере, ошибка СУБД и другие).

Проблема возникает на серверной версии программы, причём после установки очередного обновления к «1С». Проблемными стали версии программы 8.3.6, 8.3.8.хх, 8.3.9.ххх, на которых рассматриваемая мной дисфункция возникает наиболее часто.

Данная ошибка возникает случайно, в большинстве случаев не имеет каких-либо закономерностей при своём появлении, чем раздражает довольно многих пользователей, заваливающих техподдержку 1С «письма счастья».

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

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

Как исправить ошибку запроса POST к ресурсу /e1cib/logForm

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

  • Выполните стандартное «Тестирование и Исправлении» (ТиИ) вашей базы данных. Данная операция осуществляется переходом в «Конфигуратор», где во вкладке «Администрирование» необходимо выбрать опцию «Тестирование и Исправление». Операцию необходимо осуществлять в монопольном режиме, потому никого кроме вас в базе быть не должно. Перед выполнением указанной процедуры рекомендуется сделать страховочную копию ваших баз данных;
  • Установите наиболее свежие обновления к вашей версии 1С. Поскольку пик появления данной ошибки пришёлся на 2016-2017 годы, то с тех пор разработчиками был выпущен ряд обновлений, позволяющих устранить данную ошибку. Установите свежие апдейты для вашей «1С», и если не помогло, то идём дальше;
  • Откатите программу до прежней версии. В некоторых случаях (когда у пользователей было установлены самые свежие обновления) помог откат программы до более ранней (и более стабильной) версии программы;
  • При доступе к серверу 1С рекомендуется почистить кэш. Остановите на сервере службу под названием «агент сервера 1с предприятие», в каталоге кэша сервера удалите всё кроме файлов, имеющих расширение *.1 Примерный путь к каталогу может быть:

Program Files\1cv8\srvinfo\reg_1541

После чего вновь запустите указанную службу;

Также на нашем сайте мы разобрали ошибку 0400300003, связанную с нарушением условия обязательного присутствия элемента.

Заключение

Основным фактором возникновения ошибки запроса POST к ресурсу /e1cib/logForm является некорректно написанный разработчиками код обновления к программе «1С». Эффективным решением возникшей проблемы станет обновление вашей версии 1С до самой свежей версии, где рассматриваемая дисфункция уже исправлена, и появлений рассматриваемой ошибки более не наблюдается.

Сообщения об ошибках

(Winhttp.h) — приложения Win32

  • 6 минут на чтение

В этой статье

Значения ошибок, перечисленные ниже, возвращаются функцией GetLastError при сбое одной из функций Microsoft Windows HTTP Services (WinHTTP), а также возвращаются в младших 16 битах возвращаемых ошибок HRESULT от объекта WinHttpRequest .

Значения ошибок, имена которых начинаются с «ERROR_WINHTTP_», относятся к функциям WinHTTP. Функции WinHTTP также при необходимости возвращают сообщения об ошибках Windows.

ОШИБКА_WINHTTP_AUTO_PROXY_SERVICE_ERROR

12178

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

ОШИБКА_WINHTTP_AUTODETECTION_FAILED

12180

Возвращается WinHttpDetectAutoProxyConfigUrl , если WinHTTP не смог обнаружить URL-адрес файла автоконфигурации прокси (PAC).

ОШИБКА_WINHTTP_BAD_AUTO_PROXY_SCRIPT

12166

Произошла ошибка при выполнении кода сценария в файле автоконфигурации прокси (PAC).

ОШИБКА_WINHTTP_CANNOT_CALL_AFTER_OPEN

12103

Возвращается объектом HttpRequest , если указанная опция не может быть запрошена после вызова метода Open .

ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND

12102

Возвращается объектом HttpRequest , если запрошенная операция не может быть выполнена после вызова метода Send .

ОШИБКА_WINHTTP_CANNOT_CALL_BEFORE_OPEN

12100

Возвращается объектом HttpRequest , если запрошенная операция не может быть выполнена до вызова метода Open .

ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND

12101

Возвращается объектом HttpRequest , если запрошенная операция не может быть выполнена до вызова метода Send .

ОШИБКА_WINHTTP_CANNOT_CONNECT

12029

Возвращается, если соединение с сервером не удалось.

ОШИБКА_WINHTTP_CLIENT_AUTH_CERT_NEEDED

Сервер требует аутентификации клиента SSL. Приложение получает список издателей сертификатов, вызывая WinHttpQueryOption с опцией WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST . Для получения дополнительной информации см. Параметр WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST .

Если сервер запрашивает сертификат клиента, но не требует его, приложение может альтернативно вызвать WinHttpSetOption с опцией WINHTTP_OPTION_CLIENT_CERT_CONTEXT .В этом случае приложение указывает макрос WINHTTP_NO_CLIENT_CERT_CONTEXT в параметре lpBuffer в WinHttpSetOption . Для получения дополнительной информации см. Параметр WINHTTP_OPTION_CLIENT_CERT_CONTEXT .

Windows Server 2003 с пакетом обновления 1 и Windows XP с пакетом обновления 2: Эта ошибка не поддерживается.

ОШИБКА_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY

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

Windows Server 2003 с пакетом обновления 1 и Windows XP с пакетом обновления 2: Эта ошибка не поддерживается.

ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY

Контекст для сертификата клиента SSL не имеет связанного с ним закрытого ключа. Сертификат клиента мог быть импортирован на компьютер без закрытого ключа.

Windows Server 2003 с пакетом обновления 1 и Windows XP с пакетом обновления 2: Эта ошибка не поддерживается.

ОШИБКА_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW

12183

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

ОШИБКА_WINHTTP_CLIENT_AUTH_CERT_NEEDED

12044

Возвращается WinHttpReceiveResponse , когда сервер запрашивает аутентификацию клиента.

Windows Server 2003 с пакетом обновления 1 и Windows XP с пакетом обновления 2: Эта ошибка не поддерживается.

ОШИБКА_WINHTTP_CONNECTION_ERROR

12030

Соединение с сервером было сброшено или прервано, либо обнаружен несовместимый протокол SSL. Например, WinHTTP версии 5.1 не поддерживает SSL2, если клиент специально не включил его.

ОШИБКА_WINHTTP_HEADER_ALREADY_EXISTS

12155

Устарело; больше не используется.

ОШИБКА_WINHTTP_HEADER_COUNT_EXCEEDED

12181

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

ОШИБКА_WINHTTP_HEADER_NOT_FOUND

12150

Не удается найти запрошенный заголовок.

ОШИБКА_WINHTTP_HEADER_SIZE_OVERFLOW

12182

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

ОШИБКА_WINHTTP_INCORRECT_HANDLE_STATE

12019

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

ERROR_WINHTTP_INCORRECT_HANDLE_TYPE

12018

Тип поставляемой ручки не подходит для этой операции.

ОШИБКА_WINHTTP_INTERNAL_ERROR

12004

Произошла внутренняя ошибка.

ERROR_WINHTTP_INVALID_OPTION

12009

В запросе к WinHttpQueryOption или WinHttpSetOption указано недопустимое значение параметра.

ERROR_WINHTTP_INVALID_QUERY_REQUEST

12154

Устарело; больше не используется.

ERROR_WINHTTP_INVALID_SERVER_RESPONSE

12152

Ответ сервера не может быть проанализирован.

ERROR_WINHTTP_INVALID_URL

12005

URL-адрес недействителен.

ОШИБКА_WINHTTP_LOGIN_FAILURE

12015

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

ERROR_WINHTTP_NAME_NOT_RESOLVED

12007

Имя сервера не может быть разрешено.

ОШИБКА_WINHTTP_NOT_INITIALIZED

12172

Устарело; больше не используется.

ОШИБКА_WINHTTP_OPERATION_CANCELLED

12017

Операция была отменена, обычно из-за того, что дескриптор, с которым работал запрос, был закрыт до завершения операции.

ERROR_WINHTTP_OPTION_NOT_SETTABLE

12011

Запрошенная опция не может быть установлена, только запрашивается.

ОШИБКА_WINHTTP_OUT_OF_HANDLES

12001

Устарело; больше не используется.

ОШИБКА_WINHTTP_REDIRECT_FAILED

12156

Перенаправление не удалось, потому что либо схема изменилась, либо все попытки перенаправления не удались (по умолчанию пять попыток).

ERROR_WINHTTP_RESEND_REQUEST

12032

Ошибка функции WinHTTP. Желаемую функцию можно повторить с тем же дескриптором запроса.

ОШИБКА_WINHTTP_RESPONSE_DRAIN_OVERFLOW

12184

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

ОШИБКА_WINHTTP_SCRIPT_EXECUTION_ERROR

12177

Произошла ошибка при выполнении сценария.

ERROR_WINHTTP_SECURE_CERT_CN_INVALID

12038

Возвращается, если имя CN сертификата не соответствует переданному значению (эквивалент ошибки CERT_E_CN_NO_MATCH ).

ERROR_WINHTTP_SECURE_CERT_DATE_INVALID

12037

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

ERROR_WINHTTP_SECURE_CERT_REV_FAILED

12057

Указывает, что отзыв не может быть проверен, поскольку сервер отзыва был отключен (эквивалент CRYPT_E_REVOCATION_OFFLINE ).

ОШИБКА_WINHTTP_SECURE_CERT_REVOKED

12170

Указывает, что сертификат был отозван (эквивалент CRYPT_E_REVOKED ).

ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE

12179

Указывает, что сертификат недействителен для запрошенного использования (эквивалент CERT_E_WRONG_USAGE ).

ОШИБКА_WINHTTP_SECURE_CHANNEL_ERROR

12157

Указывает, что произошла ошибка, связанная с безопасным каналом (эквивалентно кодам ошибок, начинающимся с «SEC_E_» и «SEC_I_», перечисленным в «winerror.h «заголовочный файл).

ОШИБКА_WINHTTP_SECURE_FAILURE

12175

Одна или несколько ошибок были обнаружены в сертификате Secure Sockets Layer (SSL), отправленном сервером. Чтобы определить, какой тип ошибки произошел, проверьте наличие уведомления WINHTTP_CALLBACK_STATUS_SECURE_FAILURE в функции обратного вызова состояния. Для получения дополнительной информации см. WINHTTP_STATUS_CALLBACK .

ОШИБКА_WINHTTP_SECURE_INVALID_CA

12045

Указывает, что цепочка сертификатов была обработана, но завершена корневым сертификатом, которому не доверяет поставщик доверия (эквивалент CERT_E_UNTRUSTEDROOT ).

ERROR_WINHTTP_SECURE_INVALID_CERT

12169

Указывает на то, что сертификат недействителен (эквивалент таких ошибок, как CERT_E_ROLE , CERT_E_PATHLENCONST , CERT_E_CRITICAL , CERT_E_PURPOSE , CERT_E_ISSUERCHAINING , CERT_E_ISSUERCHAINING , CERT_MEDAINING , CERT_MED_MED_E_M_ ).

ОШИБКА_WINHTTP_SHUTDOWN

12012

Поддержка функции WinHTTP отключается или выгружается.

ОШИБКА_WINHTTP_TIMEOUT

12002

Истекло время ожидания запроса.

Эта ошибка может быть возвращена в результате поведения тайм-аута TCP / IP, независимо от значений тайм-аута, установленных в Windows HTTP Services.

ОШИБКА_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT

12167

Не удается загрузить файл PAC. Например, сервер, на который ссылается URL-адрес PAC, мог быть недоступен, или сервер вернул ответ 404 NOT FOUND.

ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE

12176

Тип сценария не поддерживается.

ERROR_WINHTTP_UNRECOGNIZED_SCHEME

12006

В URL указана схема, отличная от http: или https:.

ERROR_NOT_ENOUGH_MEMORY

Недостаточно памяти для выполнения запрошенной операции.

Заголовок: Объявлено в Winerror.h

ERROR_INSUFFICIENT_BUFFER

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

Заголовок: Объявлено в Winerror.h

РУЧКА_ОШИБКА_INVALID

Дескриптор, переданный интерфейсу прикладного программирования (API), был либо недействителен, либо закрыт.

Заголовок: Объявлено в Winerror.h

ERROR_NO_MORE_FILES

Больше файлов не найдено.

Заголовок: Объявлено в Winerror.h

ERROR_NO_MORE_ITEMS

Больше ничего не найдено.

Заголовок: Объявлено в Winerror.h

ERROR_NOT_SUPPORTED

Требуемый стек протоколов не загружен, и приложение не может запустить WinSock.

Заголовок: Объявлено в Winerror.h

Примечания

Для Windows XP и Windows 2000 см. Раздел «Требования к среде выполнения» на начальной странице WinHttp.

Требования

Минимальный поддерживаемый клиент Windows XP, Windows 2000 Professional с SP3 [только настольные приложения]
Минимальный поддерживаемый сервер Windows Server 2003, Windows 2000 Server с пакетом обновления 3 [только настольные приложения]
Распространяемая часть WinHTTP 5.0 и Internet Explorer 5.01 или более поздней версии в Windows XP и Windows 2000.
Заголовок
Winhttp.h

См. Также

Версии WinHTTP

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

4

пользователь

НЕИЗВЕСТНО 1 Неизвестная ошибка
СЕРВИС 2 Служба временно недоступна
МЕТОД3 4 Не удалось обработать запрос, так как он неверен
ACTION_BLOCKED 7 Запрошенное действие временно заблокировано для текущего пользователя
FLOOD_BLOCKED 8 выполнение метода заблокировано
IP_BLOCKED 9 Выполнение метода заблокировано по IP-адресу из-за подозрительной активности текущего пользователя или из-за других ограничений, распространяющихся на этот метод
PERMISSION_DENIED 10 .Возможная причина — пользователь не авторизовал приложение для выполнения операции
LIMIT_REACHED 11 Достигнут лимит звонков по запросу
CANCELED 12 Операция отменена пользователем
NOT_MULTIPART 21 Запрос без составных частей при добавлении фотографий
NOT_ACTIVATED 22 Пользователь должен активировать свою учетную запись
NOT_YET_INV12123
NOT_OWNER 24 Пользователь не является владельцем объекта
NOT_ACTIVE 25 Ошибка доставки уведомления.Пользователь неактивен в приложении
TOTAL_LIMIT_REACHED 26 Ошибка доставки уведомления. Достигнут предел уведомлений
NOT_ADMIN 50 У пользователя нет прав администратора для выполнения этого метода
PARAM 100 Отсутствующий или неверный параметр
PARAM_123_API

Параметр application_key не указан или указан неправильно
PARAM_SESSION_EXPIRED 102 Срок действия ключа сеанса истек
PARAM_SESSION_KEY 103 PARAM_SESSION_KEY 103 PARAM_SESSION_KEY

9113 пользователь

14

121 212

91ND121

Неверный ключ сеанса 17 9_14 9113

PARAM_RESIGNATURE 105 Неверная отставка
PARAM_ENTITY_ID 106 Недействительный идентификатор обсуждения
PARAM_USER_ID 110 PARAM_ALBUM_ID 120 Недопустимый идентификатор альбома
PARAM_PHOTO_ID 121 Недействительный идентификатор фотографии
PARAM_WIDGET
PARAM_WIDGET
PARAM_WIDGET
30 сообщение

PARAM_COMMENT_ID 141 Недопустимый комментарий идентификатор
PARAM_HAPPENING_ID 150 Недопустимое событие идентификатор
PARAM_HAPPENING_PHOTO_ID 151 Недопустимого фото события идентификатор
PARAM_GROUP_ID 160 Недействительный идентификатор группы
PARAM_PERMISSION 200 Приложение не может выполнить эту операцию.В большинстве случаев причиной является попытка доступа к операции без авторизации пользователя
PARAM_APPLICATION_DISABLED 210 Приложение отключено
PARAM_DECISION PARAM_DECISION PARAM_DECISION 9111AD 9114AD 9114AD 9114AD 9114AD 9114AD

ID 9114AD Неверный идентификатор значка
PARAM_PRESENT_ID 213 Неверный текущий идентификатор
PARAM_RELATION_TYPE 214
Запрос информации о недопустимом типе отношения

123123121 451

12312317 45111 сеансный ключ

11 должен быть вызван метод сеанса

Unauthorized

ALL_TOO_SIZE

_ED, но формат изображения не может быть распознан _ED

12 9111ED

9112 Anti-Spyder на фотографии

12

911_ 9112 Anti-Spam

9121 9111

EDIT_PHOTO_FILE 324 Ошибка при обработке многокомпонентного запроса
AUTH_LOGIN 401 Ошибка аутентификации.Неверное имя пользователя / пароль или маркер аутентификации, либо пользователь удален / заблокирован
AUTH_LOGIN_CAPTCHA 402 Ошибка аутентификации. Для верификации пользователя необходимо ввести капчу.
AUTH_LOGIN_WEB_HUMAN_CHECK 403 Ошибка аутентификации
NOT_SESSION_METHOD 451 Сессионный ключ 451 сеанс должен быть вызван указан для метода, требующего сеанса
CENSOR_MATCH 454 Текст отклонен цензором
FRIEND_RESTRICTION 455 Операция не может быть выполнена, так как друг установил ограничение он находится в черном списке или сделал свою учетную запись частной)
GROUP_RESTRICTION 456 Операция не может быть выполнена, так как группа установила для нее ограничение
UNAUTHORIZED_RESTRICTION 2 457

7 Unauthorized access

ЗАПИСЬ КОНФИДЕНЦИАЛЬНОСТИ 9112 3

458 То же, что и FRIEND_RESTRICTION
PHOTO_SIZE_LIMIT_EXCEEDED 500 Размер двоичного содержимого изображения в байтах превышает предел
ALL_TOO_SIZE
PHOTO_SIZE

PHOTO_SIZE_TOO_BIG 502 Слишком большой размер изображения в пикселях
PHOTO_INVALID_FORMAT 503 Формат изображения не может быть распознан
PHOTO_NO_IMAGE 505 В запросе не найдено изображение
PHOTO_PIN_TOO_MUCH 508 Слишком много выводов на фото
ФОТО_ ALBUM_NOT_BELONGS_TO_USER 512 Попытка загрузить фото в чужой альбом
PHOTO_ALBUM_NOT_BELONGS_TO_GROUP 513 513 MEDIA_3

, которая указывает на то, что группа MEDIA 9123 не принадлежит группе 9112IC_9123_911_OP_3

. 600 слишком много «средств массовой информации» параметры
MEDIA_TOPIC_TEXT_LIMIT 601 предел длины текста достигается
MEDIA_TOPIC_POLL_QUESTION_TEXT_LIMIT 602 Опрос ограничение длины вопрос текст достигается
MEDIA_TOPIC_POLL_ANSWERS_LIMIT 603 Слишком много ответов в опросе
MEDIA_TOPIC_POLL_ANSWER_TEXT_LIMIT 604 Достигнут предел длины текста ответа на опрос
MEDIA_TOPIC_WITH_12 Limit312 из

из

друзей достигнуто
MEDIA_TOPIC_WITH_FRIENDS_USER_LIMIT 606 Достигнуто ограничение на количество отмеченных друзей (зависит от пользователя)
GROUP_DUPLICATE_JOIN_REQUEST
Комментарий к группе уже зарегистрирован

CE

пользователь

122 9111_MONEY

9111_MONEY

ALL3121

0 9112 9112

не найден
INVALID_AUTHOR 701 Попытка отредактировать комментарий, не принадлежащий пользователю
COMMENT_NOT_ACTIVE 702 Попытка отредактировать удаленный комментарий Имя 9_11ED 911ED 704 Превышен тайм-аут редактирования
CHAT_NOT_FOUND 705 Чат не найден
MESSAGE_NOT_ACTIVE 706 a_ACTIVE 706 a_ACTIVE сообщение

9_ 121 900 Возвращает при попытке получить открытую информацию для несуществующего приложения
CALLBACK_INVALID_PAYMENT 1001 Сервер приложения возвращает ошибку для уведомления о неверной информации о транзакции
PAYMENT_IS_RE

PAYMENT_IS_RE 91

Для использования услуги требуется оплата
INVALID_PAYMENT 1003 Недействительная платежная транзакция
DUPLICATE_PAYMENT 1004 Слишком частые запросы на оплату не хватает денег
VCHAT_SERVICE_DISABLED 1101 Видеочат отключен
TARGET_USER_UNAVAILABLE 1102 Пользователь недоступен для видеосвязи

4 911-го для видео-сообщения

4 911 FRIENDSHIP_REQUIRED

1103 Указанный пользователь должен быть вашим другом
BATCH 1200 Ошибка пакетного вызова
APP_NO_PLATFORM_DELLOWED 9112

9121

указанное устройство не доступно
APP_DEVICE_NOT_SPECIFIED 1302 устройство не указано
APP_EMPTY_SEARCH_PARAMS 1400 поиск Местоположение ошибки
APP_SEARCH_SCENARIO_DOES_NOT_EXIST 1401 поиск Местоположение ошибки
GRAPH_PARAM_REQUEST: неправильный формат запроса 2001 Недопустимый тип содержимого POST (API-интерфейс Graph).Content-Type: application / json; необходимо указать charset = utf-8
SYSTEM 9999 Критическая системная ошибка. Уведомить службу поддержки

Open Policy Agent | REST API

Этот документ является официальной спецификацией OPA REST API.

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

Идентификаторы, присвоенные модулям политики, используются только в целях управления.Они не используются вне Policy API.

  GET / v1 / policy HTTP / 1.1  

Список модулей политик.

  GET / v1 / policy HTTP / 1.1  
  HTTP / 1.1 200 ОК
Content-Type: application / json  
  {
  "результат": [
    {
      "id": "example2",
      "raw": "package opa.examples \ n \ nimport data.servers \ n \ nviolations [server] {\ n \ tserver = servers [_] \ n \ tserver.protocols [_] = \" http \ "\ n \ tpublic_servers [сервер] \ n} \ n ",
      "ast": {
        "package": {
          "путь": [
            {
              "тип": "вар",
              "значение": "данные"
            },
            {
              "тип": "строка",
              "значение": "опа"
            },
            {
              "тип": "строка",
              "значение": "примеры"
            }
          ]
        },
        "правила": [
          {
            "голова": {
              "name": "нарушения",
              "key": {
                "тип": "вар",
                "значение": "сервер"
              }
            },
            "тело": [
              {
                "index": 0,
                "термины": [
                  {
                    "тип": "строка",
                    "значение": "экв"
                  },
                  {
                    "тип": "вар",
                    "значение": "сервер"
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "данные"
                      },
                      {
                        "тип": "строка",
                        "значение": "серверы"
                      },
                      {
                        "тип": "вар",
                        "значение": "$ 0"
                      }
                    ]
                  }
                ]
              },
              {
                «индекс»: 1,
                "термины": [
                  {
                    "тип": "строка",
                    "значение": "экв"
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "сервер"
                      },
                      {
                        "тип": "строка",
                        "значение": "протоколы"
                      },
                      {
                        "тип": "вар",
                        "значение": "$ 1"
                      }
                    ]
                  },
                  {
                    "тип": "строка",
                    "значение": "http"
                  }
                ]
              },
              {
                «индекс»: 2,
                "термины": {
                  "тип": "ссылка",
                  "значение": [
                    {
                      "тип": "вар",
                      "значение": "данные"
                    },
                    {
                      "тип": "строка",
                      "значение": "опа"
                    },
                    {
                      "тип": "строка",
                      "значение": "примеры"
                    },
                    {
                      "тип": "строка",
                      "значение": "общедоступные_серверы"
                    },
                    {
                      "тип": "вар",
                      "значение": "сервер"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    {
      "id": "example1",
      "raw": "пакет опа.примеры \ n \ nимпорт серверов данных \ nимпорт сетей данных \ nимпорт портов данных \ n \ nобщедоступные_серверы [сервер] {\ n \ tserver = серверы [_] \ n \ tserver.ports [_] = порты [k]. id \ n \ tports [k] .networks [_] = networks [m] .id \ n \ tnetworks [m] .public = true \ n} \ n ",
      "ast": {
        "package": {
          "путь": [
            {
              "тип": "вар",
              "значение": "данные"
            },
            {
              "тип": "строка",
              "значение": "опа"
            },
            {
              "тип": "строка",
              "значение": "примеры"
            }
          ]
        },
        "правила": [
          {
            "голова": {
              "name": "public_servers",
              "key": {
                "тип": "вар",
                "значение": "сервер"
              }
            },
            "тело": [
              {
                "index": 0,
                "термины": [
                  {
                    "тип": "строка",
                    "значение": "экв"
                  },
                  {
                    "тип": "вар",
                    "значение": "сервер"
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "данные"
                      },
                      {
                        "тип": "строка",
                        "значение": "серверы"
                      },
                      {
                        "тип": "вар",
                        "значение": "$ 0"
                      }
                    ]
                  }
                ]
              },
              {
                «индекс»: 1,
                "термины": [
                  {
                    "тип": "строка",
                    "значение": "экв"
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "сервер"
                      },
                      {
                        "тип": "строка",
                        "значение": "порты"
                      },
                      {
                        "тип": "вар",
                        "значение": "$ 1"
                      }
                    ]
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "данные"
                      },
                      {
                        "тип": "строка",
                        "значение": "порты"
                      },
                      {
                        "тип": "вар",
                        "значение": "k"
                      },
                      {
                        "тип": "строка",
                        "значение": "идентификатор"
                      }
                    ]
                  }
                ]
              },
              {
                «индекс»: 2,
                "термины": [
                  {
                    "тип": "строка",
                    "значение": "экв"
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение": "данные"
                      },
                      {
                        "тип": "строка",
                        "значение": "порты"
                      },
                      {
                        "тип": "вар",
                        "значение": "k"
                      },
                      {
                        "тип": "строка",
                        "значение": "сети"
                      },
                      {
                        "тип": "вар",
                        "value": "$ 2"
                      }
                    ]
                  },
                  {
                    "тип": "ссылка",
                    "значение": [
                      {
                        "тип": "вар",
                        "значение"  

HTTP | Узел.js v15.2.0 Документация

Node.js

  • Об этой документации
  • Использование и пример

  • Подтверждение тестирования
  • Асинхронные перехватчики
  • Буфер
  • Аддоны C ++
  • Дополнения C / C ++ с N-API
  • API для внедрения C ++
  • Дочерние процессы
  • Кластер
  • Параметры командной строки
  • Консоль
  • Крипто
  • Отладчик
  • Устаревшие API
  • Канал диагностики
  • DNS
  • Домен
  • Ошибки
  • События
  • Файловая система
  • Глобал
  • HTTP
  • HTTP / 2
  • HTTPS
  • Инспектор
  • Интернационализация
  • Модули

  • : модули CommonJS
  • Модули

  • : модули ECMAScript
  • Модули: модуль API
  • Модули: Пакеты
  • Нетто
  • ОС
  • Путь
  • Рабочие крючки
  • Политики
  • Процесс
  • Punycode
  • Строки запроса
  • QUIC
  • Линия чтения
  • REPL
  • Отчет
  • Поток
  • Декодер строк
  • Таймеры
  • TLS / SSL
  • Трассировка событий
  • TTY
  • UDP / датаграмма
  • URL
  • Коммунальные услуги
  • V8
  • ВМ
  • WASI
  • API веб-шифрования
  • Рабочие потоки
  • Злиб

  • Репозиторий кода и средство отслеживания проблем
  • Индекс
  • Просмотр на одной странице
  • Просмотреть как JSON
  • Посмотреть другую версию ▼

    1. 15.х
    2. 14.x LTS
    3. 13.x
    4. 12.x LTS
    5. 11.x
    6. 10.x LTS
    7. 9.x
    8. 8.x
    9. 7.x
    10. 6.x
    11. 5.x
    12. 4.x
    13. 0.12.x
    14. 0.10.x
  • Редактировать на GitHub

Содержание

  • HTTP
    • Класс: http.Agent
      • новый агент ([варианты])
      • агент.createConnection (параметры [, обратный вызов])
      • agent.keepSocketAlive (розетка)
      • agent.reuseSocket (розетка, запрос)
      • agent.destroy ()
      • agent.free Розетки
      • agent.getName (параметры)
      • agent.maxFreeSockets
      • agent.maxSockets
      • agent.maxTotalSockets
      • агент. Запросы
      • агент.розетки
    • Класс: http.ClientRequest
      • Событие: 'прерывание'
      • Событие: «подключение»
      • Событие: «продолжить»
      • Событие: «информация»
      • Событие: 're

Коды ошибок — разработчики Marketo

Ниже приведены списки кодов ошибок REST API и объяснение того, как ошибки возвращаются обратно в приложения.

Обработка и регистрация исключений

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

Типы ошибок

Marketo REST API может возвращать три разных типа ошибок при нормальной работе:

  • HTTP-уровень — эти ошибки обозначаются кодом 4xx.
  • Response-Level — Эти ошибки включаются в массив «errors» ответа JSON.
  • Уровень записи — Эти ошибки включаются в массив «результатов» ответа JSON и указываются для каждой отдельной записи с помощью поля «статус» и массива «причин».
HTTP-уровень

При нормальных условиях работы Marketo должен возвращать только две ошибки кода состояния HTTP: 413 Request Entity Too Large и 414 Request URI Too Long. И то, и другое можно исправить путем обнаружения ошибки, изменения запроса и повторной попытки, но с умными методами кодирования вы никогда не столкнетесь с ними вживую.

Marketo вернет 413, если полезная нагрузка запроса превышает 1 МБ, или 10 МБ в случае лида импорта. В большинстве сценариев эти ограничения вряд ли будут достигнуты, но добавление проверки к размеру запроса и перемещение любых записей, которые вызывают превышение лимита, в новый запрос должны предотвратить любые обстоятельства, которые приводят к тому, что эта ошибка будет возвращена любыми конечными точками.

414 будет возвращено, когда URI запроса GET превышает 8 КБ. Чтобы этого избежать, проверьте длину строки запроса, чтобы узнать, не превышает ли она этот предел.Если он изменяет ваш запрос на метод POST, введите строку запроса в качестве тела запроса с дополнительным параметром «_method = GET». Это снимает ограничение на URI. В большинстве случаев это ограничение редко достигается, но довольно часто бывает при получении больших пакетов записей с длинными индивидуальными значениями фильтра, такими как GUID.

Конечная точка Identity может вернуть ошибку 401 Unauthorized. Обычно это происходит из-за неверного идентификатора клиента или неверного секрета клиента.

Коды ошибок HTTP-уровня

413 Запрос слишком большой объект Размер полезной нагрузки превышает ограничение в 1 МБ.
414 Слишком длинный URI запроса URI запроса превышает 8 КБ. Запрос следует повторить как POST с параметром _method = GET в URL-адресе и остальной частью строки запроса в теле запроса.

Уровень ответа

Ошибки уровня ответа присутствуют, когда параметр «успех» ответа установлен в значение false, и будут иметь следующую структуру:

{
«requestId»: «e42b # 14272d07d78»,
«успех»: ложь,
«ошибки»: [
{
«код»: «601»,
«message»: «Неавторизовано»
}
]
}

{

«requestId»: «e42b # 14272d07d78»,

«success»: false,

«errors»: [

{

«code»: «601»,

«message»: » Несанкционированный «

}

]

}

Каждый объект в массиве «errors» имеет два члена: «code», который представляет собой целое число от 600 до 799 в кавычках, и «сообщение», в котором указывается причина ошибки открытым текстом.Коды 6xx всегда указывают на то, что запрос полностью не выполнен и не был выполнен. Примером этого является 601, «Недействительный токен доступа», который можно восстановить путем повторной аутентификации и передачи нового токена доступа с запросом. Ошибки 7xx указывают на то, что запрос завершился неудачно, либо из-за того, что данные не были возвращены, либо запрос был неправильно параметризован, например, включал неверную дату или отсутствовал обязательный параметр.

Коды ошибок уровня ответа

* Вызов API, который возвращает этот код ответа, не засчитывается ни в дневную квоту, ни в лимит скорости

502 Плохой шлюз Удаленный сервер возвратил ошибку.Скорее всего тайм-аут. Запрос следует повторить с экспоненциальной отсрочкой.
600 * Пустой токен доступа Параметр токена доступа не был включен в запрос.

Или вам нужно удалить «/ rest» из пути вашего вызова к конечной точке Identity.

601 * Недействительный токен доступа В запрос был включен параметр токена доступа, но значение не было допустимым токеном доступа.
602 * Срок действия токена доступа истек Токен доступа, включенный в вызов, больше не действителен из-за истечения срока его действия.
603 В доступе отказано Аутентификация прошла успешно, но у пользователя недостаточно прав для вызова этого API. Роль пользователя может потребоваться назначить дополнительные разрешения или включить белый список для доступа к API на основе IP.
604 * Истекло время ожидания запроса Запрос выполнялся слишком долго (например, возникла конкуренция в базе данных) или превышен период ожидания, указанный в заголовке вызова.
605 * Метод HTTP не поддерживается GET не поддерживается для конечной точки Sync Leads, необходимо использовать POST.
606 Максимальный предел скорости «% s» превышен за «% s» секунд Количество звонков за последние 20 секунд превысило 100
607 Дневная квота достигнута Количество вызовов сегодня превысило квоту подписки (сбрасывается ежедневно в 12:00 AM CST).

Вашу квоту можно найти в меню «Администратор»> «Веб-службы».Вы можете увеличить квоту через своего менеджера аккаунта.

608 * API временно недоступен
609 Неверный JSON

Ошибки | Discord.js Guide

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

Типы ошибок

Ошибки API

Ошибки API или DiscordAPIErrors — это ошибки, которые выдает Discord API при выполнении недопустимого запроса. Ошибки API обычно можно диагностировать с помощью предоставленного сообщения. Их также можно дополнительно изучить, просмотрев используемый метод и путь http, мы рассмотрим отслеживание этих ошибок в следующем разделе.

Пример: DiscordAPIError: Невозможно отправить пустое сообщение

Ошибки Discord.js

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

Пример: Сообщения должны быть массивом, коллекцией или числом.

Ошибки JS

Ошибки JS — это простые ошибки, которые могут быть выданы самим узлом или discord.js. Эти типы ошибок можно легко исправить, посмотрев на тип ошибки и трассировку стека.Вы можете найти полный список типов здесь и список распространенных ошибок js здесь.

Пример: ReferenceError: «x» не определено

Ошибки веб-сокета и сети

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

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

Теперь, когда возникает ошибка, она записывается в консоль и не завершает процесс.

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

Обычно для этих ошибок используются следующие коды:

  • ECONNRESET — Соединение было принудительно закрыто одноранговым узлом из-за потери соединения с веб-сокетом из-за тайм-аута или перезагрузки.
  • ETIMEDOUT — Запрос на соединение или отправку не удался, поскольку принимающая сторона не ответила через некоторое время.
  • EPIPE — Удаленная сторона записываемого потока закрыта.
  • ENOTFOUND — Домен, к которому осуществляется доступ, недоступен, обычно из-за отсутствия интернета, может быть брошен через веб-сокет и http API.
  • ECONNREFUSED — Целевая машина отклонила соединение, проверьте свои порты и брандмауэр.

Как диагностировать ошибки API

Ошибки API можно отследить, добавив прослушиватель событий для необработанных отклонений и просмотрев предоставленную дополнительную информацию.
Это можно сделать, просто добавив это в свой основной файл.

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

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

Сообщение

Самая важная часть ошибки — это сообщение, оно сообщает вам, что на самом деле пошло не так, что может помочь вам отследить, откуда она появилась.
Вы можете найти полный список сообщений здесь, в документации Discord API.

Путь

Путь — это еще одна полезная информация, путь сообщает вам, где вы пытались выполнить действие. Мы не можем охватить все пути API, но они обычно очень информативны, например, в нашем примере выше путь говорит нам, что мы сначала находимся на пути каналов, а затем, судя по идентификатору после него, мы видим, что получили конкретный канал.После / api / v7 / channels / 638200642359525387 мы видим, что получаем сообщений этого канала, и точно так же, как мы видели раньше, мы видим, что пытаемся получить доступ к определенному сообщению по идентификатору, однако мы дали это недопустимый идентификатор, который является источником сообщения.

Код

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

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

Или с помощью констант:

Здесь вы можете найти список констант.

Метод

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

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

Распространенные ошибки Discord.js и API

Предоставлен недопустимый токен.

Это очень распространенная ошибка, она возникает из-за неправильного токена, переданного в client.login () . Наиболее частые причины этой ошибки:

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

ПРЕДУПРЕЖДЕНИЕ

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

Запрос на использование токена, но токен недоступен для клиента.

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

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

Имена полей MessageEmbed не могут быть пустыми.

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

Значения поля MessageEmbed не могут быть пустыми.

Эта ошибка в сочетании с предыдущей ошибкой является результатом вызова MessageEmbed.addFields () с объектом поля, который имеет пустую строку в качестве значения для поля значение . Вы можете использовать пространство нулевой ширины, если хотите, чтобы оно было пустым.

Сообщения должны быть массивом, коллекцией или числом.

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

Участники не прибыли вовремя.

Другая распространенная ошибка. Эта ошибка возникает из-за того, что клиент запрашивает элементы у API через веб-сокет, а фрагменты элементов не прибывают вовремя и запускают тайм-аут. Наиболее частой причиной этой ошибки является плохое соединение, однако она также может быть вызвана извлечением очень большого количества элементов, превышающих 50 тысяч. Чтобы исправить это, запустите бота в месте с лучшим доступом в Интернет, например на VPS. Если это не сработает для вас, вам придется вручную изменить жестко запрограммированный тайм-аут выборки члена в исходном коде.

MaxListenersExceededWarning: Обнаружена возможная утечка памяти EventEmitter …

Эта ошибка вызвана созданием большого количества прослушивателей событий, обычно для клиента. Наиболее частая причина этого — вложение ваших слушателей событий вместо их разделения. Способ исправить эту ошибку — убедиться, что вы не вкладываете свои слушатели, это , а не , чтобы использовать emitter.setMaxListeners () , как предполагает ошибка.

Эти сообщения можно отладить разными способами:

Невозможно отправлять сообщения этому пользователю.

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

  • Бот и пользователь не имеют общей гильдии (часто люди пытаются нанести dm пользователю после того, как выгнали или заблокировали его).
  • Бот пытается связаться с другим ботом.
  • Пользователь заблокировал бота.
  • Пользователь отключил dms в настройках приватности.

В случае двух последних причин ошибку невозможно предотвратить, так как Discord API не позволяет проверить, можете ли вы отправить пользователю dm, пока вы не попытаетесь отправить его.Лучший способ справиться с этой ошибкой — добавить .catch () , в котором вы пытаетесь заблокировать пользователя и либо игнорировать отклоненное обещание, либо делать из-за этого то, что вы хотите.

Общие разные ошибки

код ENOENT … syscall spawn git.

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

Добавить комментарий

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

2021 © Все права защищены. Карта сайта