При выполнении API-запросов через Apigee Edge компоненты Apigee Edge — маршрутизаторы и обработчики сообщений, или же серверные части — могут возвращать ошибки клиентским приложениям.
Ошибки от обработчика сообщений
Обработчик сообщений — это основной компонент Apigee Edge, который обрабатывает политики и взаимодействует с серверной частью. Он может возвращать ошибки, если обнаружит какие-либо проблемы, такие как:
Проблемы с сетевым подключением, сбои при установлении TLS-соединения, недоступность бэкэнд-сервера, отсутствие ответа во время связи с бэкэнд-сервером.
Неудачи при реализации политики
Недопустимые HTTP-заголовки, кодировка, путь, несоответствие спецификациям HTTP, превышение лимитов продукта и т. д.:
С помощью HTTP-запроса, отправленного клиентскими приложениями.
ИЛИ
С HTTP-ответом, отправленным бэкэнд-сервером.
И многое другое
Пример ошибки из обработчика сообщений
Обработчик сообщений всегда возвращает код состояния HTTP, за которым следует сообщение об ошибке вместе с кодом ошибки в формате JSON, как показано ниже:
Клиентское приложение получает код ответа, подобный приведенному ниже примеру:
HTTP/1.1414Request-URI Too Long
Сообщение об ошибке от обработчика сообщений отображается в следующем формате:
Содержит сообщение об ошибке с описанием возможной причины её возникновения.
errorcode
Код ошибки (также называемый кодом неисправности ), связанный с данной ошибкой.
каталог ошибок времени выполнения
Этот каталог ошибок содержит всю необходимую информацию о кодах ошибок времени выполнения (для ошибок, не связанных с политиками), возвращаемых компонентом Apigee Edge Message Processor. Он включает следующую информацию для каждого из кодов ошибок:
Код состояния HTTP
Сообщение об ошибке
Возможные причины ошибки
Любые связанные с HTTP спецификации и/или ограничения на использование продукта.
Руководства и видеоролики, содержащие инструкции по диагностике причины ошибки и эффективные решения, которые вы можете применить для ее самостоятельного устранения (при наличии).
Исправление, которое вы можете применить, чтобы устранить ошибку самостоятельно.
Используйте поле поиска ниже, чтобы отфильтровать таблицу и отобразить указанную выше информацию для конкретного кода ошибки. Вы можете искать код состояния или любое содержимое в любом поле таблицы.
search Поиск
Код ошибки
Описание
Исправить
flow.*
flow.APITimedOut
Код состояния HTTP:
504 Gateway Timeout
Сообщение об ошибке:
API timed out
Возможная причина:
Эта ошибка возникает, если:
Сервер бэкэнда не отвечает в течение периода ожидания, заданного свойством api.timeout для конкретного API-прокси.
Выполнение политики занимает много времени из-за ресурсоемких вычислительных операций, высокой нагрузки или низкой производительности.
Примечание: Данный плейбук содержит инструкции по устранению ошибки с кодом messaging.adaptors.http.flow.GatewayTimeout ; однако вы можете использовать тот же плейбук для устранения ошибки с кодом flow.APITimedOut .
Кодировка, указанная в заголовке Content-Encoding HTTP-ответа бэкэнда/целевого сервера, является допустимой и поддерживается Apigee Edge .
НО
Формат полезной нагрузки, отправляемой бэкэндом/целевым сервером в составе HTTP-ответа, не соответствует формату кодирования, указанному в заголовке Content-Encoding
Сообщение об ошибке и его формат могут различаться в зависимости от реализации серверной части.
Возможная причина:
Эта ошибка возникает, если серверная часть отвечает Apigee Edge кодом состояния 504 .
Примечание: Код ошибки messaging.adaptors.http.flow.ErrorResponseCode не возвращается в составе сообщения об ошибке, отправляемого клиентским приложениям. Это связано с тем, что этот код ошибки устанавливается Apigee Edge всякий раз, когда бэкэнд-сервер отвечает ошибкой и любым из кодов состояния 4XX или 5XX . Вы можете просмотреть этот код ошибки в мониторинге API, журналах доступа NGINX или базе данных аналитики.
messaging.adaptors.http.flow.GatewayTimeout
Код состояния HTTP:
504 Gateway Timeout
Сообщение об ошибке:
Gateway Timeout
Возможная причина:
Эта ошибка возникает, если серверная часть не отвечает обработчику сообщений Apigee Edge в течение периода ожидания ввода-вывода, настроенного в обработчике сообщений.
Эта ошибка возникает, если заголовок Content-Length не передается клиентским приложением в составе HTTP-запросов POST и PUT , отправляемых в Apigee Edge.
Примечание: Запросы, завершающиеся с этой ошибкой, не могут быть зафиксированы инструментом трассировки, поскольку обработчик сообщений выполняет эту проверку на очень ранней стадии, задолго до обработки запроса и выполнения каких-либо политик в API-прокси.
Для устранения этой ошибки выполните следующие действия:
Убедитесь, что клиентское приложение всегда передает заголовок Content-Length в составе HTTP-запросов POST и PUT , отправляемых в Apigee Edge. Например:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Даже если вы передаете пустую полезную нагрузку в POST и PUT запросах, убедитесь, что передается заголовок Content-Length: 0 Например:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
Код состояния HTTP:
503 Service Unavailable
Сообщение об ошибке:
The Service is temporarily unavailable
Возможная причина:
Эта ошибка возникает в одном из следующих сценариев при использовании TargetServer в Apigee Edge:
Некорректное разрешение DNS-имен хоста бэкэнд-сервера пользовательским сервером авторизации привело к появлению некорректных IP-адресов, вызывающих ошибки подключения.
Ошибки таймаута соединения вызваны:
Ограничения брандмауэра на бэкэнд-сервере препятствуют подключению Apigee Edge к бэкэнд-серверу.
Проблемы с сетевым подключением между Apigee Edge и бэкэнд-сервером.
Указанный в TargetServer хост неверен или содержит нежелательные символы (например, пробел).
Эта ошибка возникает, если обработчик сообщений Apigee Edge не получает полезную нагрузку запроса от клиентского приложения в течение периода ожидания ввода-вывода, настроенного в компоненте обработчика сообщений.
Исправить
Убедитесь, что клиентское приложение отправляет полезную нагрузку запроса в течение периода ожидания ввода-вывода, настроенного в компоненте обработки сообщений Apigee Edge.
messaging.adaptors.http.flow.ServiceUnavailable
Код состояния HTTP:
503 Service Unavailable
Сообщение об ошибке:
The Service is temporarily unavailable
Возможная причина:
Эта ошибка возникает в одном из следующих случаев:
Некорректное разрешение DNS-имен хоста бэкэнд-сервера пользовательским сервером авторизации привело к появлению некорректных IP-адресов, вызывающих ошибки подключения.
Ошибки таймаута соединения вызваны:
Ограничения брандмауэра на бэкэнд-сервере препятствуют подключению Apigee Edge к бэкэнд-серверу.
Проблемы с сетевым подключением между Apigee Edge и бэкэнд-сервером.
Указанный в поле «Целевая конечная точка» хост целевого сервера неверен или содержит нежелательные символы (например, пробелы).
Эта ошибка также может возникнуть, если серверная часть преждевременно закрывает соединение, пока обработчик сообщений еще отправляет полезную нагрузку запроса на серверную часть.
Эта ошибка возникает, если Apigee Edge не может перенаправить запрос ни к одной из целевых конечных точек по следующей причине:
В прокси-сервере отсутствует условие правила маршрутизации ( <RouteRule> ), соответствующее запросу.
И
В ProxyEnpoint не определено правило маршрутизации по умолчанию (т.е., <RouteRule> без каких-либо условий).
Исправить
Для устранения этой ошибки выполните следующие действия:
Проверьте правила маршрутизации, определенные в вашем ProxyEndpoint, и внесите в них изменения, чтобы убедиться, что хотя бы одно условие правила маршрутизации соответствует вашему запросу.
При наличии нескольких правил маршрутизации (RouteRules) рекомендуется определять правило маршрутизации по умолчанию без каких-либо условий.
Убедитесь, что правило маршрутизации по умолчанию всегда определяется последним в списке условных маршрутов, поскольку правила оцениваются сверху вниз в ProxyEndpoint.
Чтобы узнать больше о задании условий <RouteRule> в ProxyEndpoint, см. раздел «Условные цели» .
messaging.runtime.SenseRaiseFault
Код состояния HTTP:
403 Forbidden
Сообщение об ошибке:
Sense Fault
Возможная причина:
Эта ошибка возникает, если запрос к API отправляется с определенного IP-адреса клиента, который заблокирован в соответствии с правилами Apigee Sense.
Исправить
Для устранения этой ошибки выполните следующие действия:
Если конкретный IP-адрес клиента не заблокирован, но ошибка всё ещё появляется, обратитесь в службу поддержки Apigee Edge .
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Код состояния HTTP:
500 Internal Server Error
Сообщение об ошибке:
Bad Form Data
Возможная причина:
Эта ошибка возникает только в том случае, если выполняются все следующие условия:
HTTP-запрос, отправленный клиентом в Apigee Edge, содержит:
Content-Type: application/x-www-form-urlencoded , and
Данные в форме должны содержать знак процента (%) или знак процента (%), за которым следуют недопустимые шестнадцатеричные символы, запрещенные в соответствии с разделом 17.13.4.1 «Формы» .
API-прокси в Apigee Edge считывает определенные параметры формы, содержащие любые символы, которые запрещены политикой ExtractVariables или AssignMessage в потоке запроса.
Эта ошибка возникает, если определенный HTTP-заголовок, который не допускается к дублированию в Apigee Edge, встречается более одного раза с одинаковыми или разными значениями в HTTP-запросе, отправляемом клиентским приложением в Apigee Edge.
Убедитесь, что HTTP-запрос, отправляемый клиентским приложением в Apigee Edge, всегда содержит допустимое имя заголовка в соответствии с RFC 7230, раздел 3.2: Поля заголовка .
protocol.http.HeaderNameWithNonAsciiChar
Код состояния HTTP:
400 Bad Request
Сообщение об ошибке:
Header {header_name} contains non ascii character {character}
Возможная причина:
Эта ошибка возникает, если имя заголовка, отправляемое клиентским приложением в Apigee Edge в рамках HTTP-запроса, содержит символы, отличные от символов ASCII.
Header {header_name} contains invalid character {character}
Возможная причина:
Эта ошибка возникает, если имя заголовка, отправляемое клиентским приложением в Apigee Edge в рамках HTTP-запроса, содержит недопустимые символы, такие как знак равенства (=), запятая (,), точка с запятой (;), табуляция, CRLF и символ новой строки.
Убедитесь, что HTTP-запрос, отправляемый клиентским приложением в Apigee Edge, не содержит недопустимых символов в именах заголовков в соответствии с RFC 7230, раздел 3.2.6: Компоненты значений полей.
protocol.http.InvalidPath
Код состояния HTTP:
400 Bad Request
Сообщение об ошибке:
Invalid path {path}
Возможная причина:
Эта ошибка возникает, если путь в URL-адресе HTTP-запроса, отправляемого клиентским приложением в Apigee Edge, содержит символы, недопустимые согласно спецификации RFC 3986, раздел 3.3: Путь.
Убедитесь, что путь в URL-адресе HTTP-запроса, отправляемого клиентским приложением в Apigee Edge, не содержит символов, недопустимых согласно RFC 3986, раздел 3.3: Путь .
protocol.http.MessageReadError
Код состояния HTTP:
502 Bad Gateway
Сообщение об ошибке:
Unexpected I/O after message headers have been read.
Возможная причина:
Эта редкая ошибка возникает, когда MP получает данные ввода-вывода по каналу, когда он этого не ожидает. MP читает запрос, прочитал все заголовки и настроен на чтение полезной нагрузки запроса. Затем он сталкивается с событием ввода-вывода, которое, по-видимому, относится к тем же заголовкам.
Исправить
Найдите сообщение в журнале, чтобы получить более подробную информацию о происходящем.
logger.atSevere().log(
"Unexpected I/O after message headers have been read. Channel diagnostics=%s."
+ " HeartBeat=%s",
input.client().getDiagnostic(), message.getHeaders().isHeartBeat());
protocol.http.TooBigBody
Код состояния HTTP:
413 Request Entity Too Large
Сообщение об ошибке:
Body buffer overflow
Возможная причина:
Эта ошибка возникает, если размер полезной нагрузки, отправляемой клиентским приложением в рамках HTTP-запроса к Apigee Edge, превышает допустимый лимит в Apigee Edge.
Общий размер всех заголовков запроса, отправляемых клиентским приложением в рамках HTTP-запроса к Apigee Edge, превышает допустимый лимит в Apigee Edge.
Эта ошибка возникает, если размер строки запроса, отправляемой клиентским приложением в рамках HTTP-запроса в Apigee Edge, превышает допустимый лимит в Apigee Edge.
Эта ошибка возникает, если заголовок Content-Encoding отправленный клиентом в составе HTTP-ответа, содержит формат кодировки/полезной нагрузки, не поддерживаемый Apigee Edge .
Эта ошибка возникает, если URL-адрес запроса к бэкэнд-серверу, представленный переменной потока target.url , содержит путь, начинающийся с вопросительного знака (?) вместо косой черты (/), что является недопустимым .
Эта ошибка возникает, если определенный HTTP-заголовок, который не допускается к дублированию в Apigee Edge, встречается более одного раза с одинаковыми или разными значениями в составе HTTP-ответа, отправляемого бэкэнд-сервером в Apigee Edge.
Убедитесь, что HTTP-ответ, отправляемый бэкэнд-сервером в Apigee Edge, всегда содержит допустимое имя заголовка в соответствии с RFC 7230, раздел 3.2: Поля заголовка .
protocol.http.EmptyPath
Код состояния HTTP:
500 Internal Server Error
Сообщение об ошибке:
Request path cannot be empty
Возможная причина:
Эта ошибка возникает, если URL-адрес HTTP-запроса к бэкэнд-серверу, представленный переменной потока target.url , содержит пустой путь.
Убедитесь, что HTTP-ответ бэкэнд-сервера, отправляемый в Apigee Edge, не содержит символов, отличных от ASCII, в именах заголовков в соответствии с RFC 7230, раздел 3.2.6: Компоненты значений полей .
protocol.http.HeaderWithInvalidChar
Код состояния HTTP:
502 Bad Gateway
Сообщение об ошибке:
Header {header_name} contains invalid character {character}
Возможная причина:
Эта ошибка возникает, если имя заголовка, отправленное сервером в составе HTTP-ответа, содержит недопустимые символы, такие как знак равенства (=), запятая (,), точка с запятой (;), табуляция, CRLF и символ новой строки.
Proxy refused to create tunnel with response status {status code}
Возможная причина:
Эта ошибка возникает при создании туннеля между Apigee Edge и бэкэнд-сервером прокси-сервером из-за проблем с брандмауэром, списками контроля доступа (ACL), DNS, доступностью бэкэнд-сервера и т. д.
Примечание:Код состояния в сообщении об ошибке ( faultstring ) указывает на основную причину проблемы.
Response Status code 306 is reserved, so can't be used.
Возможная причина:
Эта ошибка возникает, если серверная часть ответила Apigee Edge кодом состояния 306 .
Код состояния 306 был определен в предыдущей версии спецификации HTTP. В соответствии с текущей спецификацией HTTP этот код зарезервирован и не должен использоваться.
Эта ошибка возникает, если HTTP-ответ от бэкэнд-сервера к Apigee Edge имеет код 204 No Content или 205 Reset Content , но содержит тело ответа и/или один или несколько из следующих заголовков:
Эта ошибка возникает, если размер полезной нагрузки, отправляемой клиентским приложением в рамках HTTP-запроса к Apigee Edge, превышает допустимый лимит в Apigee Edge.
Эта ошибка возникает, если общий размер всех заголовков ответа, отправляемых бэкэнд-сервером в составе HTTP-ответа в Apigee Edge, превышает допустимый лимит в Apigee Edge.
Эта ошибка возникает, если размер строки ответа, отправляемой бэкэнд-сервером в составе HTTP-ответа в Apigee Edge, превышает допустимый лимит в Apigee Edge.
Эта ошибка возникает, если заголовок Content-Encoding отправленный серверной частью в составе HTTP-ответа, содержит формат кодировки/полезной нагрузки, не поддерживаемый Apigee Edge .
KeyAlias {KeyAlias_name} is not found in Keystore {Keystore_Name}
Возможная причина:
Эта ошибка возникает, если указанный в TargetEndpoint или TargetServer KeyAlias не найден в конкретном хранилище ключей.
Исправить
Убедитесь, что указанный в TargetEndpoint или TargetServer KeyAlias существует и является частью конкретного хранилища ключей.
security.util.TrustStoreWithNoCertificates
Код состояния HTTP:
500 Internal Server Error
Сообщение об ошибке:
TrustStore {truststore_name} has no certificates
Возможная причина:
Эта ошибка возникает, если указанное в TargetEndpoint или TargetServer хранилище доверенных сертификатов не содержит никаких сертификатов.
Исправить
Если вы хотите проверить сертификат бэкэнд-сервера и использовать хранилище доверенных сертификатов в TargetEndpoint или TargetServer, убедитесь, что хранилище доверенных сертификатов содержит действительные сертификаты бэкэнд-сервера.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-09-17 UTC."],[],[]]