flow.*
|
|
flow.APITimedOut
|
|
504 Gateway Timeout |
|
API timed out |
|
在以下情况下,会发生此错误:
- 后端服务器在特定 API 代理的属性
api.timeout 配置的超时期限内不会做出响应。
- 由于计算密集型操作、高负载或性能不佳,政策需要很长时间。
|
|
|
|
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 请求的一部分进行传递,则会发生此错误。 注意:无法在跟踪工具中捕获因此错误而失败的请求,因为消息处理器在非常早的阶段(远早于处理请求并在 API 代理中执行任何政策之前)执行此验证。 |
|
RFC 第 3.3.2 节:内容长度 |
|
修复
要解决此错误,请执行以下步骤:
-
确保客户端应用始终将标头 Content-Length 作为 HTTP POST 和 PUT 请求的一部分传递给 Apigee。例如:
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 的消息处理器的信任库:
- 包含与后端服务器的完整证书链不匹配的证书链
或
- 不包含后端服务器的完整证书链
- 后端服务器提供的证书链:
- 包含与目标端点中指定的主机名不匹配的完全限定域名 (FQDN)
或
- 包含的证书链不正确/不完整
-
后端服务器拒绝 Apigee 使用的 TLS 版本。
例如,如果后端服务器仅接受 TLS 版本 1.3,但 Apigee 端的目标服务器在其 TLS Protocol 字段中设置了 TLS 版本 1.2(或者根本未设置 TLS 版本,在这种情况下,Apigee 目前不会默认使用 TLS 版本 1.3),则连接会因协议版本不匹配而失败。
|
|
|
messaging.adaptors.http.flow.UnexpectedEOFAtTarget |
|
502 Bad Gateway |
|
Unexpected EOF at target |
|
TARGET_READ_UNEXPECTED_EOF |
|
在以下情况下,会发生此错误:
-
TargetServer 未正确配置为支持 Apigee 中的 TLS/SSL 连接。
- 当 Apigee 等待后端服务器的响应时,后端服务器可能会突然关闭连接。
- Apigee 和后端服务器上的 keep-alive 超时配置不正确。
|
|
|
|
messaging.runtime.*
|
|
messaging.runtime.RouteFailed |
|
500 Internal Server Error |
|
Unable to route the message to a TargetEndpoint |
|
如果 Apigee 无法将请求路由到任何 TargetEndpoint,则会发生此错误,原因如下:
- 代理中没有与请求匹配的路由规则 (
<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}" |
|
如果特定 HTTP 标头不允许在 Apigee 中包含重复项,并且它作为客户端应用发送到 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} |
|
如果客户端应用作为 HTTP 请求的一部分发送到 Apigee 的请求行大小大于 Apigee 中允许的限制,则会发生此错误。 |
|
Apigee 限制 |
|
|
protocol.http.UnsupportedEncoding |
|
|
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 |
|
如果后端服务器作为 HTTP 响应的一部分发送到 Apigee 的标头名称为空,则会发生此错误。 |
|
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. |
|
如果后端服务器将 306 状态代码返回给 Apigee,则会发生此错误。
306 状态代码是在旧版 HTTP 规范中定义的。根据当前的 HTTP 规范,此代码已预留,不应使用。
|
|
RFC 7231 第 6.3.5 节:预留 306 |
|
修复
由于状态代码 306 已被预留,因此请确保您的后端服务器在向 Apigee 发送响应时不使用此状态代码。
|
|
|
|
protocol.http.ResponseWithBody |
|
|
protocol.http.TooBigBody |
|
502 Bad Gateway |
|
Body buffer overflow |
|
如果客户端应用作为 HTTP 请求的一部分发送到 Apigee 的载荷大小大于 Apigee 中允许的限制,则会发生此错误。 |
|
Apigee 限制 |
|
|
|
|
502 Bad Gateway |
|
response headers size exceeding {limit} |
|
如果后端服务器作为对 Apigee 的 HTTP 响应的一部分发送的所有响应标头的总大小大于 Apigee 中允许的限制,则会发生此错误。 |
|
Apigee 限制 |
|
|
protocol.http.TooBigLine |
|
502 Bad Gateway |
|
response line size exceeding {limit} |
|
如果后端服务器作为 HTTP 响应的一部分发送到 Apigee 的响应行大小大于 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 中使用信任库,请确保信任库包含后端服务器的有效证书。
|