flow.*
|
|
flow.APITimedOut |
|
504 Gateway Timeout |
|
API timed out |
|
發生以下狀況時會出現這個錯誤:
- 後端伺服器不會在
api.timeout 屬性為特定 API Proxy 設定的逾時期限內做出回應。
- 由於運算需要大量運算、負載過高或效能不佳,因此政策花費較長時間。
|
注意:本應對手冊提供排解 messaging.adaptors.http.flow.GatewayTimeout 錯誤代碼的操作說明;不過,您可以使用相同的應對手冊排解 flow.APITimedOut 錯誤代碼。
|
|
教戰手冊
|
flow.SharedFlowNotFound |
|
500 Internal Server Error |
|
Shared Flow {shared_flow_name} Not Found |
|
如果出現特定共用流程時,就會發生這個錯誤:
|
|
教戰手冊 |
messaging.adaptors.http.flow
|
|
messaging.adaptors.http.flow.ApplicationNotFound |
|
404 Not Found |
|
|
Unable to identify proxy for host: {virtual_host} and url: {pathsuffix} |
|
|
在下列任一情況中都會發生這個錯誤:
- 具體的 API Proxy 如下:
- 「未」設定為接受特定虛擬主機的要求
- 「不」設定為接受要求中所用特定路徑的要求
- 「不」部署在您要提出 API 要求的特定環境中
- 「未」部署於一或多個訊息處理器
- 一或多個訊息處理器並未載入您想提出 API 要求的特定環境
|
教戰手冊 |
|
如果多個虛擬主機具有相同的主機別名和通訊埠編號,也可能會發生這個錯誤。 |
教戰手冊 |
|
|
messaging.adaptors.http.flow.DecompressionFailureAtRequest |
|
400 Bad Request |
|
Decompression failure at request |
|
只有在發生以下情況時才會發生這個錯誤:
- HTTP 要求標頭
Content-Encoding 中所指定的編碼有效,且
受 Apigee Edge 支援。
但是
- 用戶端在 HTTP 要求中傳送的酬載格式,與
Content-Encoding 標頭中指定的編碼格式不符。
|
|
教戰手冊 |
messaging.adaptors.http.flow.DecompressionFailureAtResponse |
|
502 Bad Gateway |
|
Decompression failure at response |
|
只有在發生以下情況時才會發生這個錯誤:
- 後端/目標伺服器的 HTTP 回應標頭
Content-Encoding 中指定的編碼有效,而且
受 Apigee Edge 支援。
但是
- 在 HTTP 回應中,後端/目標伺服器傳送的酬載格式與
Content-Encoding 標頭中指定的編碼格式不符。
|
|
教戰手冊 |
messaging.adaptors.http.flow.ErrorResponseCode |
|
500 |
教戰手冊
影片
|
|
錯誤訊息和格式會因後端伺服器實作方式而異。 |
|
|
如果後端伺服器以狀態碼 500 回應 Apigee Edge,就會發生這個錯誤。 |
|
|
503 |
教戰手冊
影片
|
|
錯誤訊息和格式會因後端伺服器實作方式而異。 |
|
|
如果後端伺服器以狀態碼 503 回應 Apigee Edge,就會發生這個錯誤。 |
|
|
504 |
教戰手冊 |
|
錯誤訊息和格式會因後端伺服器實作方式而異。 |
|
|
如果後端伺服器以狀態碼 504 回應 Apigee Edge,就會發生這個錯誤。 |
|
注意事項:錯誤代碼 messaging.adaptors.http.flow.ErrorResponseCode 不會包含在傳送至用戶端應用程式的錯誤訊息中。這是因為每當後端伺服器傳回錯誤以及任何 4XX 或 5XX 狀態碼時,Apigee Edge 就會設定此錯誤代碼。您可以在 API Monitoring、NGINX 存取記錄檔或數據分析資料庫中查看這個錯誤代碼。
|
|
|
messaging.adaptors.http.flow.GatewayTimeout |
|
504 Gateway Timeout |
|
Gateway Timeout |
|
如果後端伺服器未在訊息處理器中設定的
I/O 逾時期限內回應 Apigee Edge 訊息處理器,就會發生這個錯誤。 |
|
教戰手冊 |
messaging.adaptors.http.flow.LengthRequired |
|
411 Length Required |
|
'Content-Length' is missing |
|
如果用戶端應用程式未將 Content-Length 標頭做為 HTTP POST 標頭和傳送至 Apigee Edge 的 PUT 要求傳遞,就會發生這個錯誤。 注意:由於訊息處理工具是在早期階段執行這項驗證,然後才在 API Proxy 中處理要求及執行任何政策,因此追蹤記錄工具無法擷取因這項錯誤而失敗的要求。 |
|
RFC 3.3.2 節:內容長度 |
|
修正
如要解決這個錯誤,請執行下列步驟:
-
確保用戶端應用程式一律會傳遞 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 |
|
503 Service Unavailable |
|
|
The Service is temporarily unavailable |
|
|
如果在 Apigee Edge 中使用
TargetServer,就會發生下列其中一種錯誤:
- 自訂授權伺服器對後端伺服器主機的 DNS 解析不正確,導致 IP 位址錯誤導致連線錯誤。
- 連線逾時錯誤的原因:
- 後端伺服器的防火牆限制會禁止 Apigee Edge 連線至後端伺服器。
- Apigee Edge 和後端伺服器之間的網路連線問題。
- TargetServer 中指定的主機不正確,或是含有不需要的字元 (例如空格)。
|
教戰手冊
影片
|
|
如果健康狀態檢查設定為監控目標伺服器的健康狀態檢查失敗,也可能會發生這個錯誤。 |
教戰手冊
影片
|
|
|
messaging.adaptors.http.flow.RequestTimeOut |
|
408 Request Timeout |
|
Request timed out |
|
如果 Apigee Edge 訊息處理器並未收到用戶端應用程式針對訊息處理器元件中設定的
I/O 逾時週期發出的要求酬載,就會發生這個錯誤。 |
|
修正
確保用戶端應用程式會在 Apigee Edge 訊息處理器元件中設定的
I/O 逾時期間內傳送要求酬載。
|
messaging.adaptors.http.flow.ServiceUnavailable |
|
503 Service Unavailable |
|
|
The Service is temporarily unavailable |
|
|
在下列任一情況中都會發生這個錯誤:
- 自訂授權伺服器對後端伺服器主機的 DNS 解析不正確,導致 IP 位址錯誤導致連線錯誤。
- 連線逾時錯誤的可能原因:
- 後端伺服器的防火牆限制會禁止 Apigee Edge 連線至後端伺服器。
- Apigee Edge 和後端伺服器之間的網路連線問題。
- 目標端點中指定的目標伺服器主機不正確,或含有不需要的字元 (例如空格)。
|
教戰手冊
DNS 失敗:
影片
網路連線:
影片
|
|
如果訊息處理者仍在將要求酬載傳送至後端伺服器,後端伺服器提早關閉連線,也可能會發生這個錯誤。 |
教戰手冊 |
|
|
messaging.adaptors.http.flow.SslHandshakeFailed |
|
503 Service Unavailable |
|
SSL Handshake failed {error_message} |
|
如果 Apigee Edge 的訊息處理器與後端伺服器之間進行 SSL 交握程序,就會發生這個錯誤:
- Apigee Edge 訊息處理器的信任儲存庫:
- 包含的憑證鏈結與後端伺服器的完整憑證鏈結不符
或
- 不含後端伺服器的完整憑證鏈結
- 後端伺服器提供的憑證鏈結:
- 含有完整網域名稱 (FQDN),與目標端點中指定的主機名稱不符
或
- 含有不正確/不完整的憑證鏈結
|
|
教戰手冊
影片
|
messaging.adaptors.http.flow.UnexpectedEOFAtTarget |
|
502 Bad Gateway |
|
Unexpected EOF at target |
|
在下列任一情況中都會發生這個錯誤:
-
TargetServer 未正確設定,因此無法支援 Apigee Edge 中的傳輸層安全標準 (TLS)/安全資料傳輸層 (SSL) 連線。
- 後端伺服器可能會突然關閉連線,而 Apigee Edge 在等待後端伺服器的回應時。
- 讓 Apigee 和後端伺服器的即時逾時設定保持錯誤。
|
|
教戰手冊 |
|
messaging.runtime.*
|
|
messaging.runtime.RouteFailed |
|
500 Internal Server Error |
|
Unable to route the message to a TargetEndpoint |
|
如果 Apigee Edge 無法將要求轉送至任何目標端點,就會發生這個錯誤:
- 沒有任何轉送規則 (
<RouteRule> ) 條件與 Proxy 中的要求相符
及
- ProxyEndpoint 未定義任何預設轉送規則 (即沒有任何條件的
<RouteRule> )
|
|
修正
如要解決這項錯誤,請按照下列步驟操作:
- 檢查 ProxyEndpoint 中定義的轉送規則並進行修改,確保至少具備一項與您的要求相符的轉送規則條件。
- 有多個 RouteRules 時,建議您定義沒有條件的 default 轉送規則。
- 請確保預設轉送規則一律在條件式路徑清單中定義,因為規則會在 ProxyEndpoint 的由上而下接受評估。
如要進一步瞭解如何在 Proxy 端點中定義 <RouteRule> 條件,請參閱「
條件式目標」一文。
|
messaging.runtime.SenseRaiseFault |
|
403 Forbidden |
|
Sense Fault |
|
如果 API 要求來自特定用戶端 IP 位址,而該位址因 Apigee Sense 規則封鎖而遭到封鎖,就會發生這個錯誤。 |
|
|
protocol.http.* - Caused due to bad request
|
|
|
|
500 Internal Server Error |
|
Bad Form Data |
|
只有在符合下列所有條件時,才會發生這個錯誤:
- 用戶端傳送至 Apigee Edge 的 HTTP 要求包含下列內容:
Content-Type: application/x-www-form-urlencoded 和
- 含有百分比符號 (%) 或百分比符號 (%) 的表單資料,後面接著系統不允許的無效十六進位字元,如
表單 - 第 17.13.4.1 節所述。
- Apigee Edge 中的 API Proxy 會讀取特定形式參數,其中包含在要求流程中使用「ExtractVariables」或「AssignMessage」政策不允許的任何字元。
|
|
教戰手冊 |
|
|
400 Bad Request |
|
Duplicate Header "{header_name}" |
|
如果特定 HTTP 標頭不得在 Apigee Edge 中重複,且在用戶端應用程式傳送至 Apigee Edge 的 HTTP 要求中,使用相同或不同的值出現超過一次,就會發生這個錯誤。 |
|
RFC 7230 第 3.2.2 節:欄位順序 |
|
教戰手冊 |
|
|
400 Bad Request |
|
Header name cannot be empty |
|
如果用戶端應用程式向 Apigee Edge 傳送 HTTP 要求的標頭名稱空白,就會發生這個錯誤。 |
|
RFC 7230 第 3.2 節:標頭欄位 |
|
|
|
|
|
|
|
|
protocol.http.InvalidPath |
|
|
protocol.http.TooBigBody |
|
413 Request Entity Too Large |
|
Body buffer overflow |
|
如果用戶端應用程式為了向 Apigee Edge 發出 HTTP 要求而傳送的酬載大小,超過 Apigee Edge 允許的限制,就會發生這個錯誤。 |
|
Apigee 邊緣限制 |
|
教戰手冊 |
|
|
教戰手冊 |
protocol.http.TooBigLine |
|
414 Request-URI Too Long |
|
request line size exceeding {limit} |
|
如果用戶端應用程式為了向 Apigee Edge 發出 HTTP 要求而傳送的要求行大小超過 Apigee Edge 允許的限制,就會發生這個錯誤。 |
|
Apigee 邊緣限制 |
|
教戰手冊 |
protocol.http.UnsupportedEncoding |
|
教戰手冊 |
protocol.http.* - Caused by target
|
|
protocol.http.BadPath |
|
教戰手冊 |
|
|
502 Bad Gateway |
|
Duplicate Header "{header_name}" |
|
如果特定 HTTP 標頭不得在 Apigee Edge 中重複,且在後端伺服器傳送至 Apigee Edge 的 HTTP 回應中,出現相同的或不同的值重複,就會發生這個錯誤。 |
|
RFC 7230 第 3.2.2 節:欄位順序 |
|
教戰手冊 |
|
|
502 Bad Gateway |
|
Header name cannot be empty |
|
如果後端伺服器在對 Apigee Edge 的 HTTP 回應中傳送的標頭名稱空白,就會發生這個錯誤。 |
|
RFC 7230 第 3.2 節:標頭欄位 |
|
|
protocol.http.EmptyPath |
|
教戰手冊 |
|
|
|
|
|
|
protocol.http.ProxyTunnelCreationFailed |
|
503 Service Unavailable |
|
Proxy refused to create tunnel with response status {status code} |
|
Proxy 伺服器在 Apigee Edge 和後端伺服器之間建立通道時,會因防火牆、ACL (存取控制清單 (ACL)、DNS 問題、後端伺服器的可用性等) 而發生。
注意:錯誤訊息中的狀態碼 (faultstring ) 會提供問題的大致原因。
|
|
教戰手冊 |
protocol.http.Response306Reserved |
|
502 Bad Gateway |
|
Response Status code 306 is reserved, so can't be used. |
|
如果後端伺服器以 306 狀態碼回應至 Apigee Edge,就會發生這個錯誤。
306 狀態碼是在舊版 HTTP 規格中定義。根據目前的 HTTP 規格,此為預留代碼,請勿使用。
|
|
RFC 7231 第 6.3.5 節:306 保留 |
|
修正
由於系統已保留狀態碼 306 ,因此請確保後端伺服器在傳送回應至 Apigee Edge 時,不會使用這個狀態碼。
|
|
|
教戰手冊 |
protocol.http.ResponseWithBody |
|
502 Bad Gateway |
|
Received {status_code} Response with message body |
|
如果從後端伺服器傳送至 Apigee Edge 的 HTTP 回應為 204 No Content 或 205 Reset Content ,但其中包含回應主體和/或下列一或多個標頭,就會發生這個錯誤:
Content-Length
Content-Encoding
Transfer-Encoding
|
|
RFC 7231 第 6.3.5 節:204 無內容和
RFC 7231 節,6.3.6 節:205 重設內容 |
|
教戰手冊 |
protocol.http.TooBigBody |
|
502 Bad Gateway |
|
Body buffer overflow |
|
如果用戶端應用程式為了向 Apigee Edge 發出 HTTP 要求而傳送的酬載大小,超過 Apigee Edge 允許的限制,就會發生這個錯誤。 |
|
Apigee 邊緣限制 |
|
教戰手冊 |
|
|
502 Bad Gateway |
|
response headers size exceeding {limit} |
|
如果後端伺服器傳送給 Apigee Edge 的 HTTP 回應所傳送的所有回應標頭總大小超過 Apigee Edge 允許的限制,就會發生這個錯誤。 |
|
Apigee Edge 限制 |
|
教戰手冊 |
protocol.http.TooBigLine |
|
502 Bad Gateway |
|
response line size exceeding {limit} |
|
如果後端伺服器做為 Apigee Edge 的一部分 HTTP 回應所傳送的回應行大小,超過 Apigee Edge 允許的限制,就會發生這個錯誤。 |
|
Apigee 邊緣限制 |
|
教戰手冊 |
protocol.http.UnsupportedEncoding |
|
教戰手冊 |
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 包含後端伺服器的有效憑證。
|