Когда запросы 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 Proxy.
Политика выполняется долго из-за ресурсоемких вычислительных операций, высокой нагрузки или низкой производительности.
Примечание: в этом руководстве содержатся инструкции по устранению неполадок с кодом ошибки messaging.adaptors.http.flow.GatewayTimeout ; однако вы можете использовать это же руководство для устранения неполадок с кодом ошибки flow.APITimedOut .
Кодировка, указанная в заголовке HTTP-ответа бэкэнд/целевого сервера Content-Encoding действительна и поддерживается Apigee Edge .
НО
Формат полезной нагрузки, отправленный внутренним/целевым сервером как часть HTTP-ответа, не соответствует формату кодировки, указанному в заголовке Content-Encoding
Сообщение об ошибке и его формат могут различаться в зависимости от реализации внутреннего сервера.
Возможная причина:
Эта ошибка возникает, если внутренний сервер отвечает Apigee Edge кодом состояния 504 .
Примечание: Код ошибки messaging.adaptors.http.flow.ErrorResponseCode не возвращается как часть сообщения об ошибке, отправляемого клиентским приложениям. Это связано с тем, что этот код ошибки устанавливается Apigee Edge всякий раз, когда внутренний сервер отвечает ошибкой и любым из кодов состояния 4XX или 5XX . Вы можете просмотреть этот код ошибки в API Monitoring, журналах доступа NGINX или аналитической базе данных.
messaging.adaptors.http.flow.GatewayTimeout
Код статуса HTTP:
504 Gateway Timeout
Сообщение об ошибке:
Gateway Timeout
Возможная причина:
Эта ошибка возникает, если внутренний сервер не отвечает процессору сообщений Apigee Edge в течение периода ожидания ввода-вывода, настроенного на процессоре сообщений.
Эта ошибка возникает, если заголовок Content-Length не передается клиентским приложением как часть HTTP-запросов POST и PUT , отправляемых в Apigee Edge.
Примечание: Запросы, завершающиеся этой ошибкой, не могут быть зафиксированы в инструменте трассировки, поскольку обработчик сообщений выполняет эту проверку на очень ранней стадии, задолго до обработки запроса и выполнения какой-либо политики в API Proxy.
Чтобы устранить эту ошибку, выполните следующие действия:
Убедитесь, что клиентское приложение всегда передает заголовок 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 не может направить запрос ни в одну из конечных точек TargetEndpoints по следующим причинам:
Нет условия правила маршрутизации ( <RouteRule> ), соответствующего запросу в прокси-сервере
И
В ProxyEndpoint не определено правило маршрутизации по умолчанию (т.е. <RouteRule> без каких-либо условий)
Исправить
Чтобы устранить эту ошибку, следуйте этим инструкциям:
Просмотрите правила маршрутизации, определенные в ProxyEndpoint, и измените их, чтобы убедиться, что есть хотя бы одно условие правила маршрутизации, соответствующее вашему запросу.
При наличии нескольких правил маршрутизации RouteRules рекомендуется определить правило маршрутизации по умолчанию без каких-либо условий.
Убедитесь, что правило маршрута по умолчанию всегда определено последним в списке условных маршрутов, поскольку правила оцениваются сверху вниз в ProxyEndpoint.
Дополнительную информацию об определении условий <RouteRule> в ProxyEndpoint см. в разделе Условные цели .
messaging.runtime.SenseRaiseFault
Код статуса HTTP:
403 Forbidden
Сообщение об ошибке:
Sense Fault
Возможная причина:
Эта ошибка возникает, если запрос API выполняется с определенного клиентского IP-адреса, который заблокирован в соответствии с правилами Apigee Sense.
Исправить
Чтобы устранить эту ошибку, следуйте этим инструкциям:
Убедитесь, что вы заблокировали определенный клиентский IP-адрес , проверив правила, настроенные в Apigee Sense . Если он заблокирован, это означает, что он работает так, как задумано.
Если определенный IP-адрес клиента не заблокирован, но вы по-прежнему получаете эту ошибку, обратитесь в службу поддержки Apigee Edge .
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Код статуса HTTP:
500 Internal Server Error
Сообщение об ошибке:
Bad Form Data
Возможная причина:
Эта ошибка возникает только в том случае, если выполняются все следующие условия:
Данные формы со знаком процента (%) или со знаком процента (%), за которым следуют недопустимые шестнадцатеричные символы, которые не допускаются в соответствии с разделом 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 , содержит пустой путь.
Header {header_name} contains non ascii character {character}
Возможная причина:
Эта ошибка возникает, если имя заголовка, отправленное внутренним сервером как часть HTTP-ответа Apigee Edge, содержит символы, не входящие в набор ASCII.
Убедитесь, что 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}
Возможная причина:
Эта ошибка возникает, если определенный KeyAlias, указанный в TargetEndpoint или TargetServer, не найден в определенном хранилище ключей.
Исправить
Убедитесь, что KeyAlias, указанный в TargetEndpoint или TargetServer, существует и является частью определенного хранилища ключей.
security.util.TrustStoreWithNoCertificates
Код статуса HTTP:
500 Internal Server Error
Сообщение об ошибке:
TrustStore {truststore_name} has no certificates
Возможная причина:
Эта ошибка возникает, если конкретное хранилище Truststore, указанное в TargetEndpoint или TargetServer, не содержит никаких сертификатов.
Исправить
Если вы хотите проверить сертификат внутреннего сервера и хотите использовать Truststore в TargetEndpoint или TargetServer, убедитесь, что Truststore содержит действительные сертификаты внутреннего сервера.
[[["Прост для понимания","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"]],["Последнее обновление: 2025-08-08 UTC."],[],[],null,[]]