執行階段錯誤目錄

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

Apigee 中的錯誤

透過 Apigee 提出 API 要求時,Apigee 元件路由器和訊息處理器或後端伺服器可能會向用戶端應用程式傳回錯誤。

訊息處理工具的錯誤

訊息處理器是 Apigee 的核心元件,可處理政策並與後端伺服器互動。如果偵測到任何問題,例如:

  • 網路連線問題、TLS 握手失敗、後端伺服器無法使用、與後端伺服器通訊時缺少回應
  • 政策執行期間發生錯誤
  • 無效的 HTTP 標頭、編碼、路徑、不符合 HTTP 規格、超過產品限制等:
    • 使用用戶端應用程式傳送的 HTTP 要求
    • 後端伺服器傳送的 HTTP 回應
  • 以及更多

訊息處理工具的錯誤示例

訊息處理器一律會傳回 HTTP 狀態碼,接著傳回錯誤訊息和 JSON 格式的錯誤代碼,如下所示:

用戶端應用程式會取得類似下列範例的回應碼:

  HTTP/1.1 504 Gateway Timeout

訊息處理器的錯誤回應會以以下格式顯示:

{
  "fault": {
    "faultstring": "Gateway Timeout",
    "detail": {
      "errorcode": "messaging.adaptors.http.flow.GatewayTimeout"
      "reason": "TARGET_READ_TIMEOUT"
    }
  }
}

錯誤回應中的欄位說明:

欄位 說明
faultstring 包含錯誤訊息,說明錯誤的可能原因
errorcode 與錯誤相關的錯誤代碼 (也稱為錯誤代碼)
reason 包含指出錯誤可能原因的訊息

執行階段錯誤目錄

這個錯誤目錄提供您需要瞭解的所有資訊,包括 Apigee 訊息處理器元件傳回的執行階段錯誤代碼 (非政策錯誤)。其中包含每個錯誤代碼的下列資訊:

  • HTTP 狀態碼
  • 錯誤訊息
  • 錯誤原因 (並非所有錯誤訊息都會顯示 reason)
  • 導致錯誤的可能原因
  • 任何相關的 HTTP 規格和/或產品限制
  • 應對手冊和影片:提供如何診斷錯誤原因的操作說明,以及有效的解決方法,讓您自行解決錯誤 (如有)
  • 您可以自行套用來解決錯誤的修正項目

涵蓋以下錯誤代碼類別:

使用下方的「搜尋」方塊篩選表格,即可針對特定錯誤代碼顯示上述資訊。您可以在表格的任何欄位中搜尋狀態碼或任何內容。

錯誤代碼 說明 修正

flow.*

flow.APITimedOut

  • HTTP 狀態碼:
504 Gateway Timeout
  • 錯誤訊息:
API timed out
  • 可能原因:

發生這個錯誤的原因如下:

  • 後端伺服器未在特定 API Proxy 的 api.timeout 屬性所設定的逾時期限內回應。
  • 政策因大量運算作業、負載過高或效能不佳而耗費大量時間。

flow.SharedFlowNotFound

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
Shared Flow {shared_flow_name} Not Found
  • 可能原因:

如果特定共用流程符合下列情況,就會發生此錯誤:

  • 該地點不存在
  • 已存在但未部署

messaging.adaptors.http.flow

messaging.adaptors.http.flow.DecompressionFailureAtRequest

  • HTTP 狀態碼:
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

  • HTTP 狀態碼:
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 標頭中指定的編碼格式不符

messaging.adaptors.http.flow.ErrorResponseCode

  • HTTP 狀態碼:
500

  • 錯誤訊息:
錯誤訊息和格式可能因後端伺服器實作方式而異。
  • 可能原因:
如果後端伺服器傳回狀態碼 500 給 Apigee,就會發生這個錯誤。
  • HTTP 狀態碼:
503
  • 錯誤訊息:
錯誤訊息和格式可能因後端伺服器實作方式而異。
  • 可能原因:
如果後端伺服器傳回狀態碼 503 給 Apigee,就會發生這個錯誤。
  • HTTP 狀態碼:
504
  • 錯誤訊息:
錯誤訊息和格式可能因後端伺服器實作方式而異。
  • 可能原因:
如果後端伺服器傳回狀態碼 504 給 Apigee,就會發生這個錯誤。

注意:錯誤代碼 messaging.adaptors.http.flow.ErrorResponseCode 不會傳回至用戶端應用程式,也不會成為傳送的錯誤訊息的一部分。這是因為 Apigee 會在後端伺服器傳回錯誤和任何 4XX5XX 狀態碼時,設定這個錯誤代碼。您可以在 API 監控或數據分析資料庫中查看這個錯誤代碼。

messaging.adaptors.http.flow.GatewayTimeout

  • HTTP 狀態碼:
504 Gateway Timeout
  • 錯誤訊息:
Gateway Timeout
  • 原因:
TARGET_READ_TIMEOUT
  • 可能原因:
如果後端伺服器未在 Message Processor 上設定的 I/O 逾時期間內回應給 Apigee Message Processor,就會發生這項錯誤。

messaging.adaptors.http.flow.LengthRequired

  • HTTP 狀態碼:
411 Length Required
  • 錯誤訊息:
'Content-Length' is missing
  • 原因:
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED
  • 可能原因:

如果用戶端應用程式未將 Content-Length 標頭傳送至 Apigee 的 HTTP POSTPUT 要求,就會發生此錯誤。

注意:由於訊息處理器會在處理要求和執行 API Proxy 中的任何政策之前,在非常早期的階段執行這項驗證,因此無法在追蹤工具中擷取發生此錯誤的失敗要求。

  • HTTP 規格:
RFC 3.3.2 節:Content-Length

修正

如要解決這項錯誤,請執行下列步驟:

  1. 請確認用戶端應用程式一律會將標頭 Content-Length 傳送至 Apigee,做為 HTTP POSTPUT 要求的一部分。例如:

    curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
    
  2. 即使您使用 POSTPUT 要求傳遞空值酬載,也請務必傳遞標頭 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
  • 原因:

TARGET_HEALTHCHECK_CONNECT_TIMEOUT

TARGET_HEALTHCHECK_CONNECTION_REFUSED

TARGET_HEALTHCHECK_HTTPS_REQUEST_OVER_HTTP

TARGET_HEALTHCHECK_UNEXPECTED_EOF

  • 可能原因:

如果您在 Apigee 中使用 TargetServer,則會在下列任一情況下發生此錯誤:

  1. 自訂授權伺服器對後端伺服器主機的 DNS 解析方式不正確,導致 IP 位址錯誤,進而導致連線錯誤。
  2. 連線逾時錯誤的原因如下:
    1. 後端伺服器上的防火牆限制會導致 Apigee 無法連線至後端伺服器。
    2. Apigee 和後端伺服器之間的網路連線問題。
  3. 在 TargetServer 中指定的主機不正確,或含有不需要的字元 (例如空格)。
如果設定用於監控目標伺服器健康狀態檢查的健康狀態檢查失敗,也會發生這個錯誤。

messaging.adaptors.http.flow.RequestTimeOut

  • HTTP 狀態碼:
408 Request Timeout
  • 錯誤訊息:
Request timed out
  • 原因:
CLIENT_READ_TIMEOUT
  • 可能原因:
如果 Apigee 訊息處理器未在訊息處理器元件上設定的 I/O 逾時期間內,從用戶端應用程式收到要求酬載,就會發生這個錯誤。

修正

請確認用戶端應用程式會在 Apigee 訊息處理器元件上設定的 I/O 逾時期間內傳送要求酬載。

messaging.adaptors.http.flow.ServiceUnavailable

  • HTTP 狀態碼:
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

  • 可能原因:

發生這個錯誤的情況如下:

  1. 自訂授權伺服器對後端伺服器主機的 DNS 解析方式不正確,導致 IP 位址錯誤,進而導致連線錯誤。
  2. 連線逾時錯誤的原因如下:
    1. 後端伺服器上的防火牆限制會導致 Apigee 無法連線至後端伺服器。
    2. Apigee 和後端伺服器之間的網路連線問題。
  3. 目標端點中指定的目標伺服器主機不正確,或含有不需要的字元 (例如空格)。
如果後端伺服器在訊息處理工具仍在將要求酬載傳送至後端伺服器時,提早關閉連線,也會發生這個錯誤。

messaging.adaptors.http.flow.SslHandshakeFailed

  • HTTP 狀態碼:
503 Service Unavailable
  • 錯誤訊息:
SSL Handshake failed {error_message}
  • 可能原因:

在 Apigee 的訊息處理器與後端伺服器之間進行 SSL 握手程序時,如果發生下列情況,就會發生此錯誤:

  1. Apigee 訊息處理器的信任存放區:
    • 憑證鏈結不符後端伺服器的完整憑證鏈結
    • 未包含後端伺服器的完整憑證鏈結
  2. 後端伺服器提供的憑證鏈結:
    • 包含與目標端點中指定的主機名稱不符的完整網域名稱 (FQDN)
    • 含有錯誤/不完整的憑證鏈結
  3. 後端伺服器拒絕 Apigee 使用的 TLS 版本。

    舉例來說,如果後端伺服器只接受 TLS 1.3 版,但 Apigee 端的目標伺服器在 TLS Protocol 欄位中設定了 TLS 1.2 版 (或根本未設定 TLS 版本,在這種情況下,Apigee 目前「不會」將 TLS 1.3 版設為預設值),則連線會因通訊協定版本不相符而失敗。

messaging.adaptors.http.flow.UnexpectedEOFAtTarget

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Unexpected EOF at target
  • 原因:
TARGET_READ_UNEXPECTED_EOF
  • 可能原因:

發生這個錯誤的情況如下:

  1. TargetServer 未正確設定,無法在 Apigee 中支援 TLS/SSL 連線。
  2. 當 Apigee 等待後端伺服器的回應時,後端伺服器可能會突然關閉連線。
  3. 在 Apigee 和後端伺服器上設定的保活逾時時間有誤。

messaging.adaptors.http.flow.BadGateway

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Bad Gateway
  • 可能原因:

如果目標伺服器傳回給 Apigee 的 HTTP 回應格式錯誤,就會發生這個錯誤。

messaging.runtime.*

messaging.runtime.RouteFailed

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
Unable to route the message to a TargetEndpoint
  • 可能原因:

如果 Apigee 無法將要求轉送至任何 TargetEndpoints,就會發生這個錯誤,原因如下:

  • 沒有與 Proxy 中要求相符的路徑規則 (<RouteRule>) 條件
  • ProxyEndpoint 中沒有定義預設路徑規則 (也就是<RouteRule> 沒有任何條件)

修正

如要解決這項錯誤,請按照下列操作說明進行:

  1. 查看 ProxyEndpoint 中定義的路徑規則,並加以修改,確保至少有一個路徑規則條件符合您的要求。
  2. 建議您在有多個 RouteRules 時,定義沒有任何條件的預設轉送規則。
  3. 請務必在條件式路徑清單中,將預設轉送規則一律定義為最後一個,因為 ProxyEndpoint 會由上而下評估規則。

如要進一步瞭解如何在 ProxyEndpoint 中定義 <RouteRule> 條件,請參閱「 條件式目標」。

protocol.http.* - Caused due to bad request

protocol.http.BadFormData

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
Bad Form Data
  • 可能原因:

只有在符合下列所有條件時,才會發生這個錯誤:

  1. 用戶端傳送至 Apigee 的 HTTP 要求包含:
    • Content-Type: application/x-www-form-urlencoded,以及
    • 表單資料含有百分比符號 (%),或百分比符號 (%) 後面接著無效的十六進制字元,這類資料不符合 表單 - 第 17.13.4.1 節的規定。
  2. Apigee 中的 API proxy 會讀取特定表單參數,其中包含在要求流程中使用 ExtractVariables 或 AssignMessage 政策禁止使用的任何字元。

protocol.http.DuplicateHeader

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Duplicate Header "{header_name}"
  • 可能原因:
如果特定 HTTP 標頭在 Apigee 中不允許重複,且用戶端應用程式傳送至 Apigee 的 HTTP 要求中出現相同或不同的值,就會發生這個錯誤。
  • HTTP 規格:
RFC 7230,第 3.2.2 節:欄位順序

protocol.http.EmptyHeaderName

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Header name cannot be empty
  • 可能原因:
如果用戶端應用程式向 Apigee 傳送的 HTTP 要求中,標頭名稱為空白,就會發生此錯誤。
  • HTTP 規格:
RFC 7230,第 3.2 節:標頭欄位

修正

請確認用戶端應用程式傳送至 Apigee 的 HTTP 要求一律包含有效的標頭名稱,符合 RFC 7230 第 3.2 節:標頭欄位的規定。

protocol.http.HeaderNameWithNonAsciiChar

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Header {header_name} contains non ascii character {character}
  • 可能原因:
如果用戶端應用程式向 Apigee 傳送的 HTTP 要求中,標頭名稱含有非 ASCII 字元,就會發生這個錯誤。
  • HTTP 規格:

RFC 7230 的 3.2 節:標頭欄位 RFC 7230 的 3.2.6 節:欄位值元件

修正

請確認傳送至 Apigee 的用戶端 HTTP 要求,其標頭名稱中不含非 ASCII 字元,符合 RFC 7230 的第 3.2.6 節:欄位值元件的規定。

protocol.http.HeaderWithInvalidChar

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Header {header_name} contains invalid character {character}
  • 可能原因:
如果用戶端應用程式向 Apigee 傳送的 HTTP 要求中所含的標頭名稱含有無效字元,例如等號 (=)、逗號 (,)、分號 (;)、定位字元、CRLF 和換行字元,就會發生這個錯誤。
  • HTTP 規格:

RFC 7230,第 3.2 節:標頭欄位 RFC 7230,第 3.2.6 節:欄位值元件

修正

請確認用戶端應用程式傳送至 Apigee 的 HTTP 要求,其標頭名稱中不含任何無效字元,詳情請參閱 RFC 7230 第 3.2.6 節:欄位值元件

protocol.http.InvalidPath

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Invalid path {path}
  • 可能原因:
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求網址中含有根據 RFC 3986 規格第 3.3 節「路徑」所述不允許的字元,就會發生這個錯誤。
  • HTTP 規格:

RFC 3986,第 3 節:語法元件 RFC 3986,第 3.3 節:路徑

修正

請確認用戶端應用程式傳送至 Apigee 的 HTTP 要求網址中,路徑不含任何根據 RFC 3986 的 3.3 節:路徑所禁止的字元。

protocol.http.MessageReadError

  • HTTP 狀態碼:
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

  • HTTP 狀態碼:
503 Service Unavailable
  • 錯誤訊息:

Unable to resolve host {hostname}

其中:{hostname} 是動態值,其值會根據提供的主機名稱而變更。

  • 原因:
TARGET_CONNECT_HOST_NOT_REACHABLE
  • 可能原因:
如果指定的目標伺服器主機不正確,或含有不需要的字元 (例如空格),就會發生這個錯誤。

protocol.http.TooBigBody

  • HTTP 狀態碼:
413 Request Entity Too Large
  • 錯誤訊息:
Body buffer overflow
  • 可能原因:
如果用戶端應用程式傳送的酬載大小 (作為傳送至 Apigee 的 HTTP 要求的一部分) 超過 Apigee 允許的上限,就會發生這個錯誤。
  • 限制:
Apigee 限制

protocol.http.TooBigHeaders

  • HTTP 狀態碼:
431 Request Header Fields Too Large
  • 錯誤訊息:
request headers size exceeding {limit}
  • 可能原因:
用戶端應用程式傳送的所有要求標頭總大小 (做為 Apigee 的 HTTP 要求一部分) 超過 Apigee 允許的上限。
  • HTTP 規格:
RFC 6585,第 5 節:431 要求標頭欄位過大
  • 限制:
Apigee 限制

protocol.http.TooBigLine

  • HTTP 狀態碼:
414 Request-URI Too Long
  • 錯誤訊息:
request line size exceeding {limit}
  • 可能原因:
如果用戶端應用程式傳送的 HTTP 要求中要求行大小超過 Apigee 允許的限制,就會發生這個錯誤。
  • 限制:
Apigee 限制

protocol.http.UnsupportedEncoding

  • HTTP 狀態碼:
415 Unsupported Media
  • 錯誤訊息:
Unsupported Encoding "{encoding}"
  • 可能原因:
如果用戶端傳送的 Content-Encoding 標頭 (做為 HTTP 回應的一部分) 包含 Apigee 不支援的編碼/酬載格式,就會發生這個錯誤。
  • HTTP 規格:
RFC 7231,第 6.5.13 節:415 不支援的媒體類型

protocol.http.* - Caused by target

protocol.http.BadPath

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
Invalid request path
  • 可能原因:
如果後端伺服器的請求網址 (由流程變數 target.url 表示) 包含以問號 (?) 開頭的路徑,而非正斜線 (/),則會發生此錯誤,這會導致無效
  • HTTP 規格:

RFC 3986,第 3 節:語法元件 RFC 3986,第 3.3 節:路徑

protocol.http.DuplicateHeader

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Duplicate Header "{header_name}"
  • 可能原因:
如果 Apigee 中不允許出現重複的特定 HTTP 標頭,且後端伺服器傳送給 Apigee 的 HTTP 回應中出現相同或不同的值,就會發生此錯誤。
  • HTTP 規格:
RFC 7230,第 3.2.2 節:欄位順序

protocol.http.EmptyHeaderName

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Header name cannot be empty
  • 可能原因:
如果後端伺服器傳送的標頭名稱 (做為 HTTP 回應的一部分) 為空白,就會發生此錯誤。
  • HTTP 規格:
RFC 7230,第 3.2 節:標頭欄位

修正

請確保後端伺服器傳送至 Apigee 的 HTTP 回應一律包含有效的標頭名稱,符合 RFC 7230 第 3.2 節:標頭欄位的規定。

protocol.http.EmptyPath

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
Request path cannot be empty
  • 可能原因:
如果後端伺服器的 HTTP 要求網址 (由流程變數 target.url 表示) 包含空白路徑,就會發生這個錯誤。
  • HTTP 規格:

RFC 3986,第 3 節:語法元件 RFC 3986,第 3.3 節:路徑

protocol.http.HeaderNameWithNonAsciiChar

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Header {header_name} contains non ascii character {character}
  • 可能原因:
如果後端伺服器傳送的標頭名稱 (作為 HTTP 回應的一部分) 包含非 ASCII 字元,就會發生這個錯誤。
  • HTTP 規格:

RFC 7230,第 3.2 節:標頭欄位 RFC 7230,第 3.2.6 節:欄位值元件

修正

根據 RFC 7230,第 3.2.6 節:欄位值元件,確認傳送至 Apigee 的後端伺服器 HTTP 回應中,標頭名稱不含非 ASCII 字元。

protocol.http.HeaderWithInvalidChar

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Header {header_name} contains invalid character {character}
  • 可能原因:
如果後端伺服器傳送的標頭名稱 (做為 HTTP 回應的一部分) 含有無效字元,例如等號 (=)、半形逗號 (,)、分號 (;)、Tab 鍵、CRLF 和換行字元,就會發生這項錯誤。
  • HTTP 規格:

RFC 7230 的 3.2 節:標頭欄位 RFC 7230 的 3.2.6 節:欄位值元件

修正

依據 RFC 7230 第 3.2.6 節:欄位值元件的規定,請確認傳送至 Apigee 的後端伺服器 HTTP 回應中,標頭名稱中不含任何無效字元

protocol.http.ProxyTunnelCreationFailed

  • HTTP 狀態碼:
503 Service Unavailable
  • 錯誤訊息:
Proxy refused to create tunnel with response status {status code}
  • 可能原因:

代理伺服器在建立 Apigee 與後端伺服器之間的通道時,會因防火牆、ACL (存取控管清單)、DNS 問題、後端伺服器的可用性等因素而發生這個錯誤。

注意:錯誤訊息 (faultstring) 中的狀態代碼會提供問題的大致原因。

protocol.http.Response306Reserved

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Response Status code 306 is reserved, so can't be used.
  • 可能原因:

如果後端伺服器以 306 狀態碼回應 Apigee,就會發生此錯誤。

306 狀態碼是在舊版 HTTP 規格中定義。根據目前的 HTTP 規格,這個代碼是保留的,不應使用。

  • HTTP 規格:
RFC 7231,第 6.3.5 節:306 保留

修正

由於狀態碼 306 已保留,請確保後端伺服器在傳送回應給 Apigee 時,不會使用這個狀態碼。

protocol.http.Response405WithoutAllowHeader

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Received 405 Response without Allow Header
  • 可能原因:
後端伺服器會傳回 405 Method Not Allowed 狀態碼,但沒有 "Allow" 標頭。
  • HTTP 規格:

RFC 7231,第 6.5.5 節:405 方法不允許 RFC 7231,第 7.4.1 節:允許

protocol.http.ResponseWithBody

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Received {status_code} Response with message body
  • 可能原因:

如果從後端伺服器傳送至 Apigee 的 HTTP 回應為 204 No Content205 Reset Content,但包含回應主體和/或一或多個下列標頭,就會發生此錯誤:

  • Content-Length
  • Content-Encoding
  • Transfer-Encoding
  • HTTP 規格:

RFC 7231,第 6.3.5 節:204 無內容 RFC 7231,第 6.3.6 節:205 重設內容

protocol.http.TooBigBody

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Body buffer overflow
  • 可能原因:
如果用戶端應用程式傳送的酬載大小 (作為傳送至 Apigee 的 HTTP 要求的一部分) 超過 Apigee 允許的上限,就會發生這個錯誤。
  • 限制:
Apigee 限制

protocol.http.TooBigHeaders

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
response headers size exceeding {limit}
  • 可能原因:
如果後端伺服器傳送的所有回應標頭總大小 (做為 Apigee 的 HTTP 回應的一部分) 超過 Apigee 允許的上限,就會發生這個錯誤。
  • 限制:
Apigee 限制

protocol.http.TooBigLine

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
response line size exceeding {limit}
  • 可能原因:
如果後端伺服器傳送的回應行大小 (作為 Apigee 的 HTTP 回應的一部分) 超過 Apigee Edge 允許的上限,就會發生這個錯誤。
  • 限制:
Apigee 限制

protocol.http.UnsupportedEncoding

  • HTTP 狀態碼:
415 Unsupported Media
  • 錯誤訊息:
Unsupported Encoding "{encoding}"
  • 可能原因:
如果後端伺服器傳送的 Content-Encoding 標頭 (做為 HTTP 回應的一部分) 包含 Apigee 不支援的編碼/酬載格式,就會發生這個錯誤。
  • HTTP 規格:
RFC 7231,第 6.5.13 節:415 不支援的媒體類型

security.util.*

security.util.KeyAliasNotFound

  • HTTP 狀態碼:
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

  • HTTP 狀態碼:
500 Internal Server Error
  • 錯誤訊息:
TrustStore {truststore_name} has no certificates
  • 可能原因:

如果 TargetEndpoint 或 TargetServer 中參照的特定 Truststore 不含任何憑證,就會發生這個錯誤。

修正

如果您想驗證後端伺服器的憑證,並且想在 TargetEndpoint 或 TargetServer 中使用 Truststore,請務必確認 Truststore 包含後端伺服器的有效憑證。