flow.*
|
|
flow.APITimedOut
|
|
504 Gateway Timeout |
|
API timed out |
|
在以下情况下,会发生此错误:
- 后端服务器未在
api.timeout 属性为特定 API 代理配置的超时期限内响应。
- 由于计算密集型操作、高负载或性能不佳,政策需要很长时间。
|
|
|
|
flow.SharedFlowNotFound
|
|
500 Internal Server Error |
|
Shared Flow {shared_flow_name} Not Found |
|
如果特定的共享流存在以下情况,则会出现此错误:
|
|
|
messaging.adaptors.http.flow
|
|
messaging.adaptors.http.flow.DecompressionFailureAtRequest |
|
400 Bad Request |
|
Decompression failure at request |
|
CLIENT_READ_CONTENT_NOT_IN_GZIP_FORMAT
|
|
仅在以下情况下,会发生此错误:
- HTTP 请求标头
Content-Encoding 中指定的编码有效,并且受 Apigee 支持。
但是
- 客户端作为 HTTP 请求的一部分发送的载荷格式与
Content-Encoding 标头中指定的编码格式不匹配
|
|
|
messaging.adaptors.http.flow.DecompressionFailureAtResponse |
|
502 Bad Gateway |
|
Decompression failure at response |
|
TARGET_READ_CONTENT_NOT_IN_GZIP_FORMAT
TARGET_READ_INCORRECT_HEADER_CHECK
|
|
仅在以下情况下,会发生此错误:
- 在后端/目标服务器的 HTTP 响应标头
Content-Encoding 中指定的编码有效,并且 Apigee 支持
但是
- 后端/目标服务器作为 HTTP 响应的一部分发送的载荷格式与
Content-Encoding 标头中指定的编码格式不匹配
|
|
|
messaging.adaptors.http.flow.ErrorResponseCode |
|
500 |
|
|
错误消息和格式可能因后端服务器实现而异。 |
|
|
如果后端服务器向 Apigee 返回状态代码 500 ,则会出现此错误。 |
|
|
503 |
|
|
错误消息和格式可能因后端服务器实现而异。 |
|
|
如果后端服务器向 Apigee 返回状态代码 503 ,则会出现此错误。 |
|
|
504 |
|
|
错误消息和格式可能因后端服务器实现而异。 |
|
|
如果后端服务器向 Apigee 返回状态代码 504 ,则会出现此错误。 |
|
注意:错误代码 messaging.adaptors.http.flow.ErrorResponseCode 不会作为发送给客户端应用的错误消息的一部分返回。这是因为,每当后端服务器返回错误以及任何 4XX 或 5XX 状态代码时,Apigee 便会设置此错误代码。您可以在 API Monitoring 或分析数据库中查看此错误代码。
|
|
|
messaging.adaptors.http.flow.GatewayTimeout |
|
504 Gateway Timeout |
|
Gateway Timeout |
|
TARGET_READ_TIMEOUT |
|
如果后端服务器未在消息处理器上配置的 I/O 超时期限内返回给 Apigee 消息处理器,则会出现此错误。 |
|
|
messaging.adaptors.http.flow.LengthRequired |
|
411 Length Required |
|
'Content-Length' is missing |
|
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED |
|
如果客户端应用未将 Content-Length 标头作为发送到 Apigee 的 HTTP POST 和 PUT 请求的一部分传递,则会出现此错误。 注意:无法使用此错误捕获的跟踪记录无法在 Trace 工具中捕获,因为消息处理器在早期阶段会执行此验证,因此在处理请求并执行 API 代理中的任何政策之前要早得多。 |
|
RFC 3.3.2:内容长度 |
|
修复
要解决此错误,请执行以下步骤:
-
确保客户端应用始终将标头 Content-Length 作为发送到 Apigee 的 HTTP POST 和 PUT 请求的一部分传递。例如:
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 |
|
503 Service Unavailable |
|
|
The Service is temporarily unavailable |
|
|
TARGET_HEALTHCHECK_CONNECT_TIMEOUT
TARGET_HEALTHCHECK_CONNECTION_REFUSED
TARGET_HEALTHCHECK_HTTPS_REQUEST_OVER_HTTP
TARGET_HEALTHCHECK_UNEXPECTED_EOF
|
|
|
如果您在 Apigee 中使用
TargetServer,则会出现以下任一情况:
- 自定义授权服务器导致的后端服务器主机的 DNS 解析不正确,导致 IP 地址错误,从而导致连接错误。
- 连接超时错误原因如下:
- 后端服务器上的防火墙限制会阻止 Apigee 连接到后端服务器。
- Apigee 和后端服务器之间的网络连接问题。
- TargetServer 中指定的主机不正确或包含不需要的字符(例如空格)。
|
|
|
如果配置为监控目标服务器的健康检查的健康检查失败,也可能会发生此错误。 |
|
|
|
messaging.adaptors.http.flow.RequestTimeOut |
|
408 Request Timeout |
|
Request timed out |
|
CLIENT_READ_TIMEOUT |
|
如果 Apigee 消息处理器在消息处理器组件上配置的 I/O 超时期限内未从客户端应用接收请求载荷,则会出现此错误。 |
|
修复
确保客户端应用在 Apigee 的消息处理器组件上配置的 I/O 超时期限内发送请求载荷。
|
messaging.adaptors.http.flow.ServiceUnavailable |
|
503 Service Unavailable |
|
|
The Service is temporarily unavailable |
|
|
TARGET_CONNECT_TIMEOUT
TARGET_WRITE_BROKEN_PIPE
TARGET_WRITE_CONNECTION_RESET_BY_PEER
TARGET_CONNECT_CONNECTION_REFUSED
|
|
|
在以下情况下,会发生此错误:
- 自定义授权服务器对后端服务器主机的 DNS 解析不正确,导致 IP 地址错误,进而导致连接错误。
- 连接超时错误原因如下:
- 后端服务器上的防火墙限制会阻止 Apigee 连接到后端服务器。
- Apigee 和后端服务器之间的网络连接问题。
- 目标端点中指定的目标服务器主机不正确或包含不需要的字符(如空格)。
|
|
|
如果后端服务器在消息处理器仍在将请求载荷发送到后端服务器时过早关闭连接,也会发生此错误。 |
|
|
|
messaging.adaptors.http.flow.SslHandshakeFailed |
|
503 Service Unavailable |
|
SSL Handshake failed {error_message} |
|
在以下情况下,此错误会在 Apigee 的消息处理器和后端服务器之间进行 SSL 握手过程中发生:
- Apigee 的消息处理器的信任库:
- 包含与后端服务器的完整证书链不匹配的证书链
OR
- 不包含后端服务器的完整证书链
- 后端服务器提供的证书链:
- 包含与目标端点中指定的主机名不匹配的完全限定域名 (FQDN)
OR
- 包含的证书链不正确/不完整
|
|
|
messaging.adaptors.http.flow.UnexpectedEOFAtTarget |
|
502 Bad Gateway |
|
Unexpected EOF at target |
|
TARGET_READ_UNEXPECTED_EOF |
|
在以下情况下,会发生此错误:
-
TargetServer 未正确配置为支持 Apigee 中的 TLS/SSL 连接。
- 后端服务器可能会突然关闭连接,而 Apigee 正在等待后端服务器的响应。
- 在 Apigee 和后端服务器上正确配置活跃超时。
|
|
|
|
messaging.runtime.*
|
|
messaging.runtime.RouteFailed |
|
500 Internal Server Error |
|
Unable to route the message to a TargetEndpoint |
|
如果 Apigee 无法将请求路由到任何 TargetEndpoints,则会出现此错误:
- 没有与代理中的请求匹配的路由规则 (
<RouteRule> ) 条件
且
- ProxyEndpoint 中没有定义默认路由规则(即没有任何条件的
<RouteRule> )
|
|
修复
要解决此错误,请按照以下说明操作:
- 查看 ProxyEndpoint 中定义的路由规则并进行修改,以确保至少有一个路由规则条件与您的请求匹配。
- 最好在有多个 RouteRule 时定义一个无条件的默认路由规则。
- 确保默认路由规则始终在条件路由列表中最后定义,因为规则是在 ProxyEndpoint 中自上而下进行评估的。
如需详细了解如何在 ProxyEndpoint 中定义 <RouteRule> 条件,请参阅
条件目标。
|
protocol.http.* - Caused due to bad request
|
|
|
|
500 Internal Server Error |
|
Bad Form Data |
|
当且仅当满足以下所有条件时,会出现此错误:
- 客户端发送到 Apigee 的 HTTP 请求包含:
Content-Type: application/x-www-form-urlencoded 和
- 带有百分号 (%) 或百分号 (%) 后跟无效的十六进制字符的表单数据,这些字符根据表单 - 第 17.13.4.1 节是不允许的。
- Apigee 中的 API 代理会读取特定的表单参数,其中包含在请求流中使用 ExtractVariables 或 AssignMessage 政策不允许使用的任何字符。
|
|
|
|
|
400 Bad Request |
|
Duplicate Header "{header_name}" |
|
如果在客户端应用中发送到 Apigee 的 HTTP 请求中多次出现具有相同或不同值的情况,则会出现此错误。 |
|
RFC 7230 第 3.2.2 节:字段顺序 |
|
|
|
|
400 Bad Request |
|
Header name cannot be empty |
|
如果客户端应用作为 HTTP 请求的一部分发送到 Apigee 的标头名称为空,则会发生此错误。 |
|
RFC 7230 第 3.2 节:标头字段 |
|
|
|
|
|
|
|
|
protocol.http.NoResolvedHost |
|
503 Service Unavailable |
|
Unable to resolve host {hostname}
其中:{hostname} 是动态的,其值将随提供的主机名变化。
|
|
TARGET_CONNECT_HOST_NOT_REACHABLE |
|
如果指定的目标服务器主机不正确或包含不需要的字符(例如空格),就会出现此错误。 |
|
|
protocol.http.InvalidPath |
|
|
protocol.http.TooBigBody |
|
413 Request Entity Too Large |
|
Body buffer overflow |
|
如果客户端应用作为 HTTP 请求的一部分发送到 Apigee 的载荷大小大于 Apigee 允许的限额,则会出现此错误。 |
|
Apigee 限制 |
|
|
|
|
|
protocol.http.TooBigLine |
|
414 Request-URI Too Long |
|
request line size exceeding {limit} |
|
如果客户端应用作为 Apigee 请求的一部分发送到 Apigee 的请求行大小超过 Apigee 允许的限额,则会出现此错误。 |
|
Apigee 限制 |
|
|
protocol.http.UnsupportedEncoding |
|
415 Unsupported Media |
|
Unsupported Encoding "{encoding}" |
|
如果客户端作为 HTTP 响应的一部分发送的 Content-Encoding 标头包含 Apigee 不支持的编码/载荷格式,则会出现此错误。 |
|
RFC 7231 第 6.5.13 节:415 不支持的媒体类型 |
|
|
protocol.http.* - Caused by target
|
|
protocol.http.BadPath |
|
|
|
|
502 Bad Gateway |
|
Duplicate Header "{header_name}" |
|
如果在后端服务器中发送到 Apigee 的 HTTP 响应中多次包含相同值或不同值,但 Apigee 中不允许出现特定 HTTP 标头,则会出现此错误。 |
|
RFC 7230 第 3.2.2 节:字段顺序 |
|
|
|
|
502 Bad Gateway |
|
Header name cannot be empty |
|
如果后端服务器在对 Apigee 进行 HTTP 响应时发送的标头名称为空,则会发生此错误。 |
|
RFC 7230 第 3.2 节:标头字段 |
|
|
protocol.http.EmptyPath |
|
|
|
|
|
|
|
|
protocol.http.ProxyTunnelCreationFailed |
|
503 Service Unavailable |
|
Proxy refused to create tunnel with response status {status code} |
|
由于防火墙、ACL(访问控制列表)、DNS 问题、后端服务器可用性的可用性等,在代理服务器与 Apigee 与后端服务器之间创建隧道期间会发生此错误。
注意:错误消息 (faultstring ) 中的状态代码提供了问题的简要原因。
|
|
|
protocol.http.Response306Reserved |
|
502 Bad Gateway |
|
Response Status code 306 is reserved, so can't be used. |
|
如果后端服务器向 Apigee 返回 306 状态代码,则会出现此错误。
306 状态代码在先前版本的 HTTP 规范中定义。根据当前的 HTTP 规范,此代码已预留,不应使用。
|
|
RFC 7231 第 6.3.5 节:306 保留 |
|
修复
由于状态代码 306 已被预留,因此请确保您的后端服务器在向 Apigee 发送响应时不会使用此状态代码。
|
|
|
502 Bad Gateway |
|
Received 405 Response without Allow Header |
|
后端服务器返回 405 Method Not Allowed 状态代码,而不使用“允许”标头。 |
|
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="/PX9CewVbrdUzMVvoYtlcBAwphnODeWOvXeTBxkC1LyzyiBQ4MLFas/WazvgBhY96P0r5T0X7fdSVJ/HtE3Jxg==">
RFC 7231, section 6.5.5: 405 Method Not Allowed and
RFC 7231, section 7.4.1: Allow</aclass="external"> |
|
|
protocol.http.ResponseWithBody |
|
|
protocol.http.TooBigBody |
|
502 Bad Gateway |
|
Body buffer overflow |
|
如果客户端应用作为 HTTP 请求的一部分发送到 Apigee 的载荷大小大于 Apigee 允许的限额,则会出现此错误。 |
|
Apigee 限制 |
|
|
|
|
502 Bad Gateway |
|
response headers size exceeding {limit} |
|
如果后端服务器作为 HTTP 响应的一部分向 Apigee 发送的所有响应标头的总大小大于 Apigee 允许的限额,则会出现此错误。 |
|
Apigee 限制 |
|
|
protocol.http.TooBigLine |
|
502 Bad Gateway |
|
response line size exceeding {limit} |
|
如果后端服务器在对 Apigee 进行 HTTP 响应时发送的响应行的大小大于 Apigee Edge 中允许的限额,则会出现此错误。 |
|
Apigee 限制 |
|
|
protocol.http.UnsupportedEncoding |
|
415 Unsupported Media |
|
Unsupported Encoding "{encoding}" |
|
如果后端服务器作为 HTTP 响应的一部分发送的 Content-Encoding 标头包含 Apigee 不支持的编码/载荷格式,则会出现此错误。 |
|
RFC 7231 第 6.5.13 节:415 不支持的媒体类型 |
|
|
security.util.*
|
|
security.util.KeyAliasNotFound |
|
500 Internal Server Error |
|
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name} |
|
如果在特定密钥库中找不到 TargetEndpoint 或 TargetServer 中引用的特定 KeyAlias,则会出现此错误。
|
|
修复
确保 TargetEndpoint 或 TargetServer 中指定的 KeyAlias 存在且属于特定密钥库的一部分。
|
security.util.TrustStoreWithNoCertificates |
|
500 Internal Server Error |
|
TrustStore {truststore_name} has no certificates |
|
如果 TargetEndpoint 或 TargetServer 中引用的特定信任库不包含任何证书,则会出现此错误。
|
|
修复
如果您要验证后端服务器的证书,并且想要在 TargetEndpoint 或 TargetServer 中使用信任库,请确保信任库包含后端服务器的有效证书。
|