Когда запросы API выполняются через Apigee Edge, компоненты Apigee Edge — маршрутизаторы и процессоры сообщений или внутренние серверы — могут возвращать ошибки клиентским приложениям.
Ошибки процессора сообщений
Процессор сообщений — это основной компонент Apigee Edge, который обрабатывает политики и взаимодействует с внутренними серверами. Он может возвращать ошибки, если обнаруживает какие-либо проблемы, такие как:
Проблемы с сетевым подключением, сбои подтверждения TLS, недоступность внутреннего сервера, отсутствие ответа во время связи с внутренним сервером.
Сбои при выполнении политики
Неверные заголовки HTTP, кодировка, путь, несоответствие спецификациям HTTP, превышение ограничений продукта и т. д.:
С HTTP-запросом, отправленным клиентскими приложениями
ИЛИ
С HTTP-ответом, отправленным внутренним сервером
И многое другое
Пример ошибки процессора сообщений
Процессор сообщений всегда возвращает код состояния HTTP, за которым следует сообщение об ошибке, а также код ошибки в формате JSON, как показано ниже:
Клиентское приложение получает код ответа, подобный следующему примеру:
HTTP/1.1 414 Request-URI Too Long
Ответ об ошибке от процессора сообщений отображается в следующем формате:
Содержит сообщение об ошибке с описанием возможной причины ошибки.
errorcode
Код ошибки (также называемый кодом неисправности ), связанный с ошибкой
Каталог ошибок времени выполнения
Этот каталог ошибок предоставляет всю необходимую информацию о кодах ошибок времени выполнения (для ошибок, не связанных с политикой), возвращаемых компонентом процессора сообщений Apigee Edge. Он включает следующую информацию для каждого из кодов ошибок:
Код статуса HTTP
Сообщение об ошибке
Возможные причины ошибки
Любые связанные спецификации HTTP и/или ограничения продукта.
Пособия и видеоролики, содержащие инструкции по диагностике причины ошибки и эффективные решения, которые вы можете применить для устранения ошибки самостоятельно (если доступно).
Исправление, которое вы можете применить для устранения ошибки самостоятельно
Используйте поле поиска ниже, чтобы отфильтровать таблицу и отобразить приведенную выше информацию для определенного кода ошибки. Вы можете искать код состояния или любое содержимое в любом поле таблицы.
search Поиск
Код ошибки
Описание
Исправить
flow.*
flow.APITimedOut
Код состояния HTTP:
504 Gateway Timeout
Сообщение об ошибке:
API timed out
Возможная причина:
Эта ошибка возникает, если:
Внутренний сервер не отвечает в течение периода ожидания, настроенного свойством api.timeout для конкретного прокси-сервера API.
Политика занимает много времени из-за ресурсоемких операций, высокой нагрузки или низкой производительности.
Примечание. В этом сборнике инструкций приведены инструкции по устранению неполадок с кодом ошибки 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, журналах доступа 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 не может направить запрос ни к одной из 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
Возможная причина:
Эта ошибка возникает тогда и только тогда, когда выполняются все следующие условия:
HTTP-запрос, отправленный клиентом в Apigee Edge, содержит:
Content-Type: application/x-www-form-urlencoded и
Данные формы со знаком процента (%) или знаком процента (%), за которым следуют недопустимые шестнадцатеричные символы, которые не разрешены в соответствии с разделом 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 и символ новой строки.
Эта ошибка возникает, если путь в URL-адресе HTTP-запроса, отправленном клиентским приложением в Apigee Edge, содержит символы, которые не разрешены в соответствии со спецификацией RFC 3986, раздел 3.3: Путь.
Убедитесь, что путь в URL-адресе HTTP-запроса, отправленном клиентским приложением в Apigee Edge, не содержит символов, которые не разрешены в соответствии с RFC 3986, раздел 3.3: Путь .
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}
Возможная причина:
Эта ошибка возникает, если конкретный KeyAlias, указанный в TargetEndpoint или TargetServer, не найден в определенном хранилище ключей.
Исправить
Убедитесь, что KeyAlias, указанный в TargetEndpoint или TargetServer, существует и является частью определенного хранилища ключей.
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"]],["Последнее обновление: 2024-11-18 UTC."],[],[]]