flow.*
flow.APITimedOut
504 Gateway Timeout
API timed out
發生這個錯誤的原因如下:
後端伺服器未在特定 API Proxy 的
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 支援。
BUT
用戶端傳送的酬載格式 (做為 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 支援,
BUT
後端/目標伺服器傳送的負載格式 (做為 HTTP 回應的一部分) 與 Content-Encoding
標頭中指定的編碼格式不符
注意: 在某些情況下,當您將 Content-Encoding: deflate
標頭與 deflate 壓縮演算法搭配使用時,Apigee 仍可能會傳回 TARGET_READ_INCORRECT_HEADER_CHECK
錯誤。當後端實作的是與
RFC 1950 不符的 deflate 壓縮演算法時,就會發生這種情況。為解決這個問題,您可以將目標伺服器的壓縮演算法從 deflate 變更為 gzip,並在 HTTP 回應中使用 Content-Encoding: gzip
標頭做為因應之道。
messaging.adaptors.http.flow.ErrorResponseCode
500
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 500
給 Apigee,就會發生這個錯誤。
503
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 503
給 Apigee,就會發生這個錯誤。
504
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 504
給 Apigee,就會發生這個錯誤。
注意: 錯誤代碼 messaging.adaptors.http.flow.ErrorResponseCode
不會傳回至用戶端應用程式,也不會成為傳送的錯誤訊息的一部分。這是因為 Apigee 會在後端伺服器 傳回錯誤和任何 4XX
或 5XX
狀態碼時,設定這個錯誤代碼。您可以在 API 監控或數據分析資料庫中查看這個錯誤代碼。
messaging.adaptors.http.flow.GatewayTimeout
504 Gateway Timeout
Gateway Timeout
TARGET_READ_TIMEOUT
如果後端伺服器未在 Message Processor 上設定的 I/O 逾時期間內回應給 Apigee Message Processor,就會發生這項錯誤。
messaging.adaptors.http.flow.LengthRequired
411 Length Required
'Content-Length' is missing
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED
如果用戶端應用程式未將 Content-Length
標頭傳送至 Apigee 的 HTTP POST
和 PUT
要求,就會發生此錯誤。
注意: 由於訊息處理器會在處理要求和執行 API Proxy 中的任何政策之前,在非常早期的階段執行這項驗證,因此無法在追蹤工具中擷取發生此錯誤的失敗要求。
RFC 3.3.2 節:Content-Length
修正
修正
如要解決這項錯誤,請執行下列步驟:
請確認用戶端應用程式一律會將標頭 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 訊息處理器的信任存放區:
憑證鏈結不符後端伺服器的完整憑證鏈結
或
未包含後端伺服器的完整憑證鏈結
後端伺服器提供的憑證鏈結:
包含與目標端點中指定的主機名稱不符的完整網域名稱 (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 和後端伺服器上設定的保活逾時時間有誤。
messaging.adaptors.http.flow.BadGateway
502 Bad Gateway
Bad Gateway
如果目標伺服器傳回給 Apigee 的 HTTP 回應格式錯誤,就會發生這個錯誤。
messaging.runtime.*
messaging.runtime.RouteFailed
500 Internal Server Error
Unable to route the message to a TargetEndpoint
如果 Apigee 無法將要求轉送至任何 TargetEndpoints,就會發生這個錯誤,原因如下:
沒有與 Proxy 中要求相符的路徑規則 (<RouteRule>
) 條件
且
ProxyEndpoint 中沒有定義預設路徑規則 (也就是<RouteRule>
沒有任何條件)
修正
修正
如要解決這項錯誤,請按照下列操作說明進行:
查看 ProxyEndpoint 中定義的路徑規則,並加以修改,確保至少有一個路徑規則條件符合您的要求。
建議您在有多個 RouteRules 時,定義沒有任何條件的預設 轉送規則。
請務必在條件式路徑清單中,將預設轉送規則一律定義為最後一個,因為 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 proxy 會讀取特定表單參數,其中包含在要求流程中使用 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
如果用戶端應用程式向 Apigee 傳送的 HTTP 要求中,標頭名稱為空白,就會發生此錯誤。
RFC 7230,第 3.2 節:標頭欄位
修正
修正
修正
protocol.http.InvalidPath
修正
protocol.http.MessageReadError
502 Bad Gateway
Unexpected I/O after message headers have been read.
如果啟用回應串流功能,且在回應從後端傳輸時 (但不是之前或之後) 用戶端斷開連線,就會發生這個錯誤。問題是由用戶端觸發。
修正
修正
如要瞭解用戶端為何提早中斷連線,請檢查用戶端 (或用於用戶端的負載平衡器) 的記錄。舉例來說,如果是應用程式負載平衡器,可能會是「client_disconnected_after_partial_response」、「client_disconnected_before_any_response」或「backend_timeout」錯誤。
關閉
protocol.http.NoResolvedHost
503 Service Unavailable
Unable to resolve host {hostname}
其中:{hostname}
是動態值,其值會根據提供的主機名稱而變更。
TARGET_CONNECT_HOST_NOT_REACHABLE
如果指定的目標伺服器主機不正確,或含有不需要的字元 (例如空格),就會發生這個錯誤。
protocol.http.TooBigBody
413 Request Entity Too Large
Body buffer overflow
如果用戶端應用程式傳送的酬載大小 (作為傳送至 Apigee 的 HTTP 要求的一部分) 超過 Apigee 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.TooBigLine
414 Request-URI Too Long
request line size exceeding {limit}
如果用戶端應用程式傳送的 HTTP 要求中要求行大小超過 Apigee 允許的限制,就會發生這個錯誤。
Apigee 限制
protocol.http.UnsupportedEncoding
415 Unsupported Media
Unsupported Encoding "{encoding}"
如果用戶端傳送的 Content-Encoding
標頭 (做為 HTTP 回應的一部分) 包含 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
如果後端伺服器傳送的標頭名稱 (做為 HTTP 回應的一部分) 為空白,就會發生此錯誤。
RFC 7230,第 3.2 節:標頭欄位
修正
protocol.http.EmptyPath
修正
修正
protocol.http.ProxyTunnelCreationFailed
503 Service Unavailable
Proxy refused to create tunnel with response status {status code}
代理伺服器在建立 Apigee 與後端伺服器之間的通道時,會因防火牆、ACL (存取控管清單)、DNS 問題、後端伺服器的可用性等因素而發生這個錯誤。
注意: 錯誤訊息 (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
如果用戶端應用程式傳送的酬載大小 (作為傳送至 Apigee 的 HTTP 要求的一部分) 超過 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}
如果後端伺服器傳送的回應行大小 (作為 Apigee 的 HTTP 回應的一部分) 超過 Apigee Edge 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.UnsupportedEncoding
415 Unsupported Media
Unsupported Encoding "{encoding}"
如果後端伺服器傳送的 Content-Encoding
標頭 (做為 HTTP 回應的一部分) 包含 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}
如果在特定 Keystore 中找不到 TargetEndpoint 或 TargetServer 中參照的特定 KeyAlias,就會發生此錯誤。
修正
修正
請確認在 TargetEndpoint 或 TargetServer 中指定的 KeyAlias 存在,且屬於特定 Keystore。
關閉
security.util.TrustStoreWithNoCertificates
500 Internal Server Error
TrustStore {truststore_name} has no certificates
如果 TargetEndpoint 或 TargetServer 中參照的特定 Truststore 不含任何憑證,就會發生這個錯誤。
修正
修正
如果您想驗證後端伺服器的憑證,並且想在 TargetEndpoint 或 TargetServer 中使用 Truststore,請務必確認 Truststore 包含後端伺服器的有效憑證。
關閉