執行階段錯誤目錄

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

Apigee Edge 中的錯誤

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

訊息處理工具的錯誤

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

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

訊息處理工具的錯誤範例

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

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

HTTP/1.1 414 Request-URI Too Long

訊息處理器的錯誤回應格式如下:

{
   "fault":{
      "faultstring":"request line size exceeding 7,168",
      "detail":{
         "errorcode":"protocol.http.TooBigLine"
      }
   }
}

錯誤回應中的欄位說明:

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

執行階段錯誤目錄

這個錯誤目錄提供所有必要資訊,說明 Apigee Edge Message Processor 元件傳回的執行階段錯誤代碼 (適用於非政策錯誤)。這份報表會針對每個錯誤代碼列出下列資訊:

  • HTTP 狀態碼
  • 錯誤訊息
  • 錯誤的可能原因
  • 任何相關的 HTTP 規格和/或產品限制
  • 應對手冊和影片,內含錯誤原因診斷說明,以及可自行套用的有效解決方法 (如有)
  • 修正方式,可自行解決錯誤

涵蓋的錯誤代碼類別如下:

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

錯誤代碼 說明 修正

flow.*

flow.APITimedOut

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

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

  • 後端伺服器未在特定 API Proxy 的 api.timeout 屬性設定的逾時期間內回覆。
  • 由於需要大量運算資源的作業、高負載或效能不佳,政策需要很長時間才能生效。

注意:本劇本提供排解錯誤代碼 messaging.adaptors.http.flow.GatewayTimeout 的操作說明,但您也可以使用相同劇本排解 flow.APITimedOut 錯誤代碼。

教戰手冊

flow.SharedFlowNotFound

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

如果特定共用流程有下列情況,就會發生這個錯誤:

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

messaging.adaptors.http.flow

messaging.adaptors.http.flow.ApplicationNotFound

  • HTTP 狀態碼:
404 Not Found
  • 錯誤訊息:
Unable to identify proxy for host: {virtual_host} and url: {pathsuffix}
  • 可能原因:

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

  1. 具體的 API Proxy 為:
    1. 未設定為接受特定虛擬主機的要求
    2. 未設定為接受要求中使用的特定路徑上的要求
    3. 未部署到您嘗試發出 API 要求的特定環境
    4. 未部署到一或多個訊息處理器
  2. 您嘗試發出 API 要求的特定環境,未載入一或多個訊息處理器
教戰手冊
如果多個虛擬主機具有相同的主機別名和通訊埠編號,也可能發生這個錯誤。 教戰手冊

messaging.adaptors.http.flow.DecompressionFailureAtRequest

  • HTTP 狀態碼:
400 Bad Request
  • 錯誤訊息:
Decompression failure at request
  • 可能原因:

只有在下列情況下才會發生這個錯誤:

  • HTTP 要求標頭 Content-Encoding 中指定的編碼有效,且 Apigee Edge 支援該編碼
  • BUT

  • 用戶端在 HTTP 要求中傳送的酬載格式,與 Content-Encoding 標頭中指定的編碼格式不符
PLAYBOOK

messaging.adaptors.http.flow.DecompressionFailureAtResponse

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

只有在下列情況下才會發生這個錯誤:

  • 後端/目標伺服器的 HTTP 回應標頭 Content-Encoding 中指定的編碼有效,且 Apigee Edge 支援該編碼
  • BUT

  • 後端/目標伺服器傳送的 HTTP 回應負載格式,與 Content-Encoding 標頭中指定的編碼格式不符
PLAYBOOK

messaging.adaptors.http.flow.ErrorResponseCode

  • HTTP 狀態碼:
500

PLAYBOOK

影片

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

PLAYBOOK

影片

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

注意:錯誤代碼 messaging.adaptors.http.flow.ErrorResponseCode 不會隨傳送至用戶端應用程式的錯誤訊息一併回傳。這是因為每當後端伺服器傳回錯誤和任何 4XX5XX 狀態碼時,Apigee Edge 就會設定這個錯誤代碼。您可以在 API 監控、NGINX 存取記錄或 Analytics 資料庫中查看這個錯誤碼。

messaging.adaptors.http.flow.GatewayTimeout

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

messaging.adaptors.http.flow.LengthRequired

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

如果用戶端應用程式未在傳送至 Apigee Edge 的 HTTP POSTPUT 要求中傳遞 Content-Length 標頭,就會發生這項錯誤。

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

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

修正

如要解決這項錯誤,請按照下列步驟操作:

  1. 請確保用戶端應用程式一律會將標頭 Content-Length 當做傳送至 Apigee Edge 的 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
  • 可能原因:

如果您在 Apigee Edge 中使用 TargetServer,則在下列其中一種情況下會發生這項錯誤:

  1. 自訂授權伺服器對後端伺服器主機的 DNS 解析錯誤,導致 IP 位址錯誤,進而發生連線錯誤。
  2. 連線逾時錯誤的原因:
    1. 後端伺服器的防火牆限制會導致 Apigee Edge 無法連線至後端伺服器。
    2. Apigee Edge 與後端伺服器之間的網路連線問題。
  3. TargetServer 中指定的主機不正確,或含有不必要的字元 (例如空格)。

教戰手冊

影片

如果設定用來監控目標伺服器健康狀態檢查的健康狀態檢查失敗,也可能發生這個錯誤。

教戰手冊

影片

messaging.adaptors.http.flow.RequestTimeOut

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

修正

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

messaging.adaptors.http.flow.ServiceUnavailable

  • HTTP 狀態碼:
503 Service Unavailable
  • 錯誤訊息:
The Service is temporarily unavailable
  • 可能原因:

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

  1. 自訂授權伺服器對後端伺服器主機的 DNS 解析錯誤,導致 IP 位址錯誤,進而發生連線錯誤。
  2. 連線逾時錯誤的原因:
    1. 後端伺服器的防火牆限制會導致 Apigee Edge 無法連線至後端伺服器。
    2. Apigee Edge 與後端伺服器之間的網路連線問題。
  3. 目標端點中指定的目標伺服器主機不正確,或含有不必要的字元 (例如空格)。

教戰手冊

DNS 失敗:

影片

網路連線:

影片

如果訊息處理器仍在將要求酬載傳送至後端伺服器,但後端伺服器卻過早關閉連線,也可能發生這個錯誤。 PLAYBOOK

messaging.adaptors.http.flow.SslHandshakeFailed

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

如果發生下列情況,Apigee Edge 的訊息處理器與後端伺服器之間的 SSL 交握程序就會發生這個錯誤:

  1. Apigee Edge 訊息處理器的信任儲存區:
    • 包含的憑證鏈結與後端伺服器的完整憑證鏈結不符
    • 未包含後端伺服器的完整憑證鏈結
  2. 後端伺服器提供的憑證鏈結:
    • 包含的完整網域名稱 (FQDN) 與目標端點中指定的主機名稱不符
    • 含有不正確/不完整的憑證鏈結

教戰手冊

影片

messaging.adaptors.http.flow.UnexpectedEOFAtTarget

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

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

  1. TargetServer 未正確設定,無法在 Apigee Edge 中支援 TLS/SSL 連線。
  2. Apigee Edge 等待後端伺服器回應時,後端伺服器可能會突然關閉連線。
  3. Apigee 和後端伺服器上設定的 Keep-Alive 超時時間有誤。
教戰手冊

messaging.runtime.*

messaging.runtime.RouteFailed

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

如果 Apigee Edge 無法將要求路由至任何 TargetEndpoint,就會發生這項錯誤,原因如下:

  • Proxy 中沒有符合要求的轉送規則 (<RouteRule>) 條件
  • ProxyEndpoint 中未定義預設路徑規則 (即 <RouteRule>,無任何條件)

修正

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

  1. 檢查 ProxyEndpoint 中定義的路徑規則,並進行修改,確保至少有一項路徑規則條件符合您的要求。
  2. 如果有多個 RouteRule,建議您定義沒有條件的預設轉送規則。
  3. 請務必在條件式路徑清單中最後定義預設轉送規則,因為系統會在 ProxyEndpoint 中由上而下評估規則。

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

messaging.runtime.SenseRaiseFault

  • HTTP 狀態碼:
403 Forbidden
  • 錯誤訊息:
Sense Fault
  • 可能原因:
如果從特定用戶端 IP 位址發出 API 要求,且該位址遭到 Apigee Sense 規則封鎖,就會發生這項錯誤。

修正

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

  1. 檢查 Apigee Sense 中設定的規則,確認您已封鎖特定用戶端 IP 位址。如果遭到封鎖,表示系統運作正常。
  2. 如果特定用戶端 IP 位址未遭封鎖,但您仍收到這項錯誤,請與 Apigee Edge 支援團隊聯絡。

protocol.http.* - Caused due to bad request

protocol.http.BadFormData

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

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

  1. 用戶端傳送至 Apigee Edge 的 HTTP 要求包含:
    • Content-Type: application/x-www-form-urlencoded、 和
    • 表單資料含有百分比符號 (%),或百分比符號 (%) 後接續無效的十六進位字元,這類字元不符合 表單 - 第 17.13.4.1 節的規定。
  2. Apigee Edge 中的 API Proxy 會在要求流程中,使用 ExtractVariables 或 AssignMessage 政策,讀取含有任何不允許字元的特定表單參數。
教戰手冊

protocol.http.DuplicateHeader

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

protocol.http.EmptyHeaderName

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

修正

請確保用戶端應用程式傳送至 Apigee Edge 的 HTTP 要求,一律包含有效的標頭名稱 (根據 RFC 7230 第 3.2 節:標頭欄位)。

protocol.http.HeaderNameWithNonAsciiChar

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

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

修正

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

protocol.http.HeaderWithInvalidChar

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

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

修正

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

protocol.http.InvalidPath

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

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

修正

請確保用戶端應用程式傳送至 Apigee Edge 的 HTTP 要求網址路徑,不含任何不允許的字元,如 RFC 3986 第 3.3 節:路徑所述。

protocol.http.MessageReadError

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Unexpected I/O after message headers have been read.
  • 可能原因:
當 MP 在非預期的管道上收到 I/O 時,就會發生這個罕見錯誤。MP 正在讀取要求,已讀取所有標頭,並設定為讀取要求酬載。然後遇到似乎是相同標頭的 I/O 事件。

修正

找出記錄訊息,進一步瞭解發生了什麼事。

logger.atSevere().log(
    "Unexpected I/O after message headers have been read. Channel diagnostics=%s."
        + " HeartBeat=%s",
    input.client().getDiagnostic(), message.getHeaders().isHeartBeat());
                

protocol.http.TooBigBody

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

protocol.http.TooBigHeaders

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

protocol.http.TooBigLine

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

protocol.http.UnsupportedEncoding

  • HTTP 狀態碼:
415 Unsupported Media
  • 錯誤訊息:
Unsupported Encoding "{encoding}"
  • 可能原因:
如果用戶端在 HTTP 回應中傳送的 Content-Encoding 標頭包含 Apigee Edge 不支援的編碼/酬載格式,就會發生這個錯誤。
  • 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 Edge 不允許重複的特定 HTTP 標頭,在後端伺服器傳送至 Apigee Edge 的 HTTP 回應中,出現相同或不同值的次數超過一次,就會發生這個錯誤。
  • HTTP 規格:
RFC 7230 的 3.2.2 節:欄位順序
PLAYBOOK

protocol.http.EmptyHeaderName

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
Header name cannot be empty
  • 可能原因:
如果後端伺服器傳送給 Apigee Edge 的 HTTP 回應中含有空白標頭名稱,就會發生這項錯誤。
  • HTTP 規格:
RFC 7230 的 3.2 節:標頭欄位

修正

請確保後端伺服器傳送至 Apigee Edge 的 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}
  • 可能原因:
如果後端伺服器在傳送給 Apigee Edge 的 HTTP 回應中,標頭名稱含有非 ASCII 字元,就會發生這項錯誤。
  • HTTP 規格:

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

修正

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

protocol.http.HeaderWithInvalidChar

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

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

修正

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

protocol.http.ProxyTunnelCreationFailed

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

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

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

PLAYBOOK

protocol.http.Response306Reserved

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

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

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

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

修正

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

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 Method Not Allowed RFC 7231 第 7.4.1 節:Allow

教戰手冊

protocol.http.ResponseWithBody

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

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

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

RFC 7231 第 6.3.5 節:204 No Content RFC 7231 第 6.3.6 節:205 Reset Content

教戰手冊

protocol.http.TooBigBody

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

protocol.http.TooBigHeaders

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

protocol.http.TooBigLine

  • HTTP 狀態碼:
502 Bad Gateway
  • 錯誤訊息:
response line size exceeding {limit}
  • 可能原因:
如果後端伺服器傳送給 Apigee Edge 的 HTTP 回應中,回應行的長度超過 Apigee Edge 允許的上限,就會發生這個錯誤。
  • 限制:
Apigee Edge 限制
教戰手冊

protocol.http.UnsupportedEncoding

  • HTTP 狀態碼:
415 Unsupported Media
  • 錯誤訊息:
Unsupported Encoding "{encoding}"
  • 可能原因:
如果後端伺服器在 HTTP 回應中傳送的 Content-Encoding 標頭包含 Apigee Edge 不支援的編碼/酬載格式,就會發生這項錯誤。
  • 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}
  • 可能原因:

如果 TargetEndpoint 或 TargetServer 中參照的特定 KeyAlias 未在特定 Keystore 中找到,就會發生這項錯誤。

修正

確認 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 包含後端伺服器的有效憑證。