Ошибка при выполнении запроса 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.
Код ошибки | Описание | Возможные причины |
Другие ошибки | ||
---|---|---|
0 | Нетипизированные ошибки | Описание ошибки см. в ответе API |
503 | Функции API временно недоступны | На сервере ведутся технические работы |
429 | Превышен лимит одновременных обращений к API |
|
10001 | Внутренняя ошибка | |
Ошибки авторизации | ||
53 | Ошибка авторизации |
|
54 | Нет прав |
|
Неверное обращение к API | ||
1000 | Неверное имя запроса |
Адрес запроса не соответствует формату: /v2/ajax/_operator_/_service_[/_method_] |
1001 | Неверно указан оператор | |
1002 | Неверно указан сервис | |
1003 | Неверно указан метод |
|
1004 | Неверная версия API | |
Неверное значение поля | ||
2000 | Ошибка в формате передаваемых данных | |
2001 | Отсутствует обязательный параметр | |
2002 | Указан параметр с неверным типом |
|
2003 | Указан параметр с неверным значением | |
2004 | Неверно указаны параметры фильтра fitlers |
|
2005 | Неверно указаны параметры пагинации |
|
Как сделать запрос к API?
API InSales позволяет работать с бэк-офисом магазина, используя HTTP-запросы. При помощи API можно получать, добавлять, изменять и удалять информацию о различных объектах (например, товарах, категориях, дополнительных полях и т.д.)
Предполагается, что работа с API организована на внешнем сервере (НЕ на сервере платформы), который отправляет к серверу платформы запросы определенного типа. Для удобства в этой статье будет рассмотрена отправка запросов при помощи приложения Postman. В качестве альтернативы можно использовать Advanced REST Client.
Все доступные запросы в форматах XML и JSON описаны на api.insales.ru. Типовые запросы в формате XML с более подробным описанием можно найти на wiki.insales.ru.
- Ограничения
- Авторизация
- Общие принципы
- Примеры XML-запросов
- Примеры JSON-запросов
- Возможные коды ответов сервера
Ограничения
На платформе присутствует ограничение в 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 и способы ее устранения на стороне пользователя
При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:
- Идентификация – получение вашей учетной записи («identity») по username/login или email.
- Аутентификация («authentic») – проверка того, что вы знаете пароль от этой учетной записи.
- Авторизация – проверка вашей роли (статуса) в системе и решение о предоставлении доступа к запрошенной странице или ресурсу на определенных условиях.
Большинство пользователей сохраняют свои данные по умолчанию в истории браузеров, что позволяет быстро идентифицироваться на наиболее часто посещаемых страницах и синхронизировать настройки между устройствами. Данный способ удобен для серфинга в интернете, но может привести к проблемам с безопасностью доступа к конфиденциальной информации. При наличии большого количества авторизованных регистрационных данных к различным сайтам используйте надежный мастер-пароль, который закрывает доступ к сохраненной в браузере информации.
Наиболее распространенной причиной появления ошибки с кодом 401 для рядового пользователя является ввод неверных данных при посещении определенного ресурса. В этом и других случаях нужно попробовать сделать следующее:
- Проверьте в адресной строке правильность написания URL. Особенно это касается перехода на подстраницы сайта, требующие авторизации. Введите правильный адрес. Если переход на страницу осуществлялся после входа в аккаунт, разлогинитесь, вернитесь на главную страницу и произведите повторный вход с правильными учетными данными.
- При осуществлении входа с сохраненными данными пользователя и появлении ошибки сервера 401 проверьте их корректность в соответствующих настройках данного браузера. Возможно, авторизационные данные были вами изменены в другом браузере. Также можно очистить кэш, удалить cookies и повторить попытку входа. При удалении истории браузера или очистке кэша потребуется ручное введение логина и пароля для получения доступа. Если вы не помните пароль, пройдите процедуру восстановления, следуя инструкциям.
- Если вы считаете, что вводите правильные регистрационные данные, но не можете получить доступ к сайту, обратитесь к администратору ресурса. В этом случае лучше всего сделать скриншот проблемной страницы.
- Иногда блокировка происходит на стороне провайдера, что тоже приводит к отказу в доступе и появлению сообщения с кодировкой 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
НЕИЗВЕСТНО | 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
Open Policy Agent | REST APIЭтот документ является официальной спецификацией OPA REST API. API политики предоставляет конечные точки CRUD для управления модулями политики. Модули политики можно добавлять, удалять и изменять в любое время. Идентификаторы, присвоенные модулям политики, используются только в целях управления.Они не используются вне Policy API. Список модулей политик. HTTP | Узел.js v15.2.0 ДокументацияNode.js
Модули Модули
Содержание
Коды ошибок — разработчики MarketoНиже приведены списки кодов ошибок REST API и объяснение того, как ошибки возвращаются обратно в приложения. Обработка и регистрация исключенийПри разработке для Marketo очень важно, чтобы запросы и ответы регистрировались при обнаружении неожиданного исключения. Хотя некоторые типы исключений, такие как истекшая аутентификация, могут быть безопасно обработаны повторной аутентификацией, для других может потребоваться взаимодействие со службой поддержки, и в этом сценарии всегда будут запрашиваться запросы и ответы. Типы ошибокMarketo REST API может возвращать три разных типа ошибок при нормальной работе:
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-уровня
Уровень ответаОшибки уровня ответа присутствуют, когда параметр «успех» ответа установлен в значение false, и будут иметь следующую структуру: {
Каждый объект в массиве «errors» имеет два члена: «code», который представляет собой целое число от 600 до 799 в кавычках, и «сообщение», в котором указывается причина ошибки открытым текстом.Коды 6xx всегда указывают на то, что запрос полностью не выполнен и не был выполнен. Примером этого является 601, «Недействительный токен доступа», который можно восстановить путем повторной аутентификации и передачи нового токена доступа с запросом. Ошибки 7xx указывают на то, что запрос завершился неудачно, либо из-за того, что данные не были возвращены, либо запрос был неправильно параметризован, например, включал неверную дату или отсутствовал обязательный параметр. Коды ошибок уровня ответа * Вызов API, который возвращает этот код ответа, не засчитывается ни в дневную квоту, ни в лимит скорости
Ошибки | Discord.js GuideНесомненно, вы столкнулись с ошибками при создании ботов. Хотя ошибки очень полезны для предупреждения вас о том, что идет не так, многие люди озадачены ими и тем, как их отследить и исправить, но не волнуйтесь, мы поможем вам.В этом разделе будет рассказано, как диагностировать ошибки, как определять, откуда они происходят, и как их исправлять. Типы ошибокОшибки APIОшибки API или DiscordAPIErrors — это ошибки, которые выдает Discord API при выполнении недопустимого запроса. Ошибки API обычно можно диагностировать с помощью предоставленного сообщения. Их также можно дополнительно изучить, просмотрев используемый метод и путь http, мы рассмотрим отслеживание этих ошибок в следующем разделе. Пример: Ошибки Discord.jsDiscord.js Ошибки — это ошибки, которые генерируются самой библиотекой, их обычно можно легко отследить с помощью трассировки стека и сообщения об ошибке. Пример: Ошибки JSОшибки JS — это простые ошибки, которые могут быть выданы самим узлом или discord.js. Эти типы ошибок можно легко исправить, посмотрев на тип ошибки и трассировку стека.Вы можете найти полный список типов здесь и список распространенных ошибок js здесь. Пример: Ошибки веб-сокета и сетиОшибки веб-сокета и сети являются распространенными системными ошибками, создаваемыми узлом в ответ на что-то не так с подключением к веб-сокету. К сожалению, эти ошибки не имеют конкретного решения и могут быть (обычно) исправлены путем улучшения, более стабильной и прочной связи. Discord.js автоматически попытается повторно подключиться к веб-сокету в случае возникновения ошибки. Обычно эти ошибки приводят к сбою вашего процесса, однако вы можете добавить прослушиватель событий для этих ошибок, который уведомит вас о них и не приведет к сбою вашего процесса, как показано ниже. Теперь, когда возникает ошибка, она записывается в консоль и не завершает процесс. В версии 12 ошибки WebSocket обрабатываются внутренне, что означает, что ваш процесс никогда не должен вылетать из-за них. Если вы хотите регистрировать эти ошибки, если они произойдут, вы можете прослушать событие Обычно для этих ошибок используются следующие коды:
Как диагностировать ошибки API Ошибки API можно отследить, добавив прослушиватель событий для необработанных отклонений и просмотрев предоставленную дополнительную информацию. В следующий раз, когда вы получите сообщение об ошибке, внизу будет отображаться информация, которая будет выглядеть примерно так, например: Вся эта информация может помочь вам отследить причину ошибки и способы ее устранения.В этом разделе мы рассмотрим, что означает каждое свойство. Сообщение Самая важная часть ошибки — это сообщение, оно сообщает вам, что на самом деле пошло не так, что может помочь вам отследить, откуда она появилась. Путь Путь — это еще одна полезная информация, путь сообщает вам, где вы пытались выполнить действие. Мы не можем охватить все пути API, но они обычно очень информативны, например, в нашем примере выше путь говорит нам, что мы сначала находимся на пути каналов, а затем, судя по идентификатору после него, мы видим, что получили конкретный канал.После Код Код является еще одним частичным представлением сообщения, в данном случае Код также очень полезен, если вы хотите обрабатывать только конкретную ошибку.Допустим, мы пытались удалить сообщение, которое может быть, а может и не быть, и мы хотели просто игнорировать неизвестные ошибки сообщения. Это можно сделать, проверив код вручную или используя константы discord.js. Или с помощью констант: Здесь вы можете найти список констант. МетодПоследняя часть информации может многое рассказать нам о том, что мы пытались сделать с путем, есть набор предопределенных ключевых слов, которые опишите наши действия на пути. В этом конкретном примере мы видим, что пытаемся получить доступ к части данных, в частности, к сообщению. Распространенные ошибки Discord.js и APIПредоставлен недопустимый токен. Это очень распространенная ошибка, она возникает из-за неправильного токена, переданного в
ПРЕДУПРЕЖДЕНИЕ Перед выпуском версии существовала проблема, из-за которой токен не имел правильного префикса, что приводило к тому, что действительные токены помечались как недопустимые. Если вы убедились, что все вышеперечисленное не соответствует действительности, убедитесь, что вы обновили discord.js до текущей стабильной версии. Запрос на использование токена, но токен недоступен для клиента.Другая распространенная ошибка, эта ошибка возникает из-за того, что клиент пытается выполнить действие, для которого требуется токен, но токен недоступен.Чаще всего это вызвано уничтожением клиента и последующей попыткой выполнить действие. Эта ошибка также вызвана попыткой использовать клиента, который не вошел в систему. Оба приведенных ниже примера вызывают ошибки. Имена полей MessageEmbed не могут быть пустыми. Эта ошибка возникает из-за попытки вызвать Значения поля MessageEmbed не могут быть пустыми. Эта ошибка в сочетании с предыдущей ошибкой является результатом вызова Сообщения должны быть массивом, коллекцией или числом. Эта ошибка возникает из-за недопустимого вызова Участники не прибыли вовремя.Другая распространенная ошибка. Эта ошибка возникает из-за того, что клиент запрашивает элементы у API через веб-сокет, а фрагменты элементов не прибывают вовремя и запускают тайм-аут. Наиболее частой причиной этой ошибки является плохое соединение, однако она также может быть вызвана извлечением очень большого количества элементов, превышающих 50 тысяч. Чтобы исправить это, запустите бота в месте с лучшим доступом в Интернет, например на VPS. Если это не сработает для вас, вам придется вручную изменить жестко запрограммированный тайм-аут выборки члена в исходном коде. MaxListenersExceededWarning: Обнаружена возможная утечка памяти EventEmitter … Эта ошибка вызвана созданием большого количества прослушивателей событий, обычно для клиента. Наиболее частая причина этого — вложение ваших слушателей событий вместо их разделения. Способ исправить эту ошибку — убедиться, что вы не вкладываете свои слушатели, это , а не , чтобы использовать Эти сообщения можно отладить разными способами: Невозможно отправлять сообщения этому пользователю.Эта ошибка возникает, когда бот пытается отправить сообщение DM пользователю, но не может это сделать. Это вызвано множеством причин:
В случае двух последних причин ошибку невозможно предотвратить, так как Discord API не позволяет проверить, можете ли вы отправить пользователю dm, пока вы не попытаетесь отправить его.Лучший способ справиться с этой ошибкой — добавить Общие разные ошибкикод ENOENT … syscall spawn git. Эта ошибка обычно возникает из-за того, что ваша система не может найти |