查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
在用戶端與伺服器之間的通訊中,伺服器會傳回 HTTP 狀態碼 405
Method Not Allowed
,如果
伺服器已知的 HTTP 要求方法
但是目標資源不支援這個 API。在 Apigee Edge 中同樣
傳回 HTTP 狀態碼 405 Method Not Allowed.
Apigee Edge 預期後端伺服器會傳送 405 Method Not Allowed
回應
其中列出 Allow
標頭中允許的方法,根據規格
RFC 7231,6.5.5 節:405 不允許的方法。
Allow
標頭必須以下列格式傳送:
Allow: HTTP_METHODS
舉例來說,如果您的後端伺服器允許 GET
、POST
和
HEAD
方法,請務必確保 Allow
標頭包含這些方法
如下所示:
Allow: GET, POST, HEAD
如果後端伺服器沒有傳送包含 HTTP 狀態碼的 Allow
標頭
405 Method Not Allowed,
,Apigee 會將 HTTP 狀態碼 502 Bad
Gateway
傳回給protocol.http.Response405WithoutAllowHeader
用戶端應用程式。如要解決這個問題,建議的解決方案是
修正後端伺服器以遵循規格
RFC 7231,6.5.5 節:405 不允許的方法或使用錯誤處理機制
以 HTTP 狀態碼 405 Method Not Allowed
回應,包括
疑難排解教戰手冊中的 Allow
標頭
502 Bad Gateway - Response 405 without allow 標頭。
不過,在某些情況下,可能無法修正後端或修改 並立即解決問題。
在這種情況下,您可以為 405
屬性設定忽略允許標頭
HTTP.ignore.allow_header.for.405
於
暫時的訊息處理器層級。將這項屬性設為 true
會禁止 Apigee
將 502 Bad Gateway
回應傳回用戶端應用程式,即使
後端伺服器會傳送 HTTP 狀態碼 405 Method Not Allowed
Allow
標頭。
準備好修正後端伺服器,以透過 Allow
標頭傳送 HTTP 狀態碼 405 Method
Not Allowed
後,就可以還原屬性
將 HTTP.ignore.allow_header.for.405
設為其預設值 false
。
事前準備
使用本文件中的步驟前,請務必先瞭解下列主題:
- 閱讀教戰手冊 - 502 Bad Gateway - 回應 405 without Allow header。
- 如果您不熟悉在 Private Cloud 中設定 Edge 的屬性,請參閱 如何設定 Edge。
將訊息處理器上的 405 屬性「忽略允許」標頭設為 true
在 Apigee Edge 中,HTTP.ignore.allow_header.for.405
屬性已設為
預設為 false
。這可讓 Apigee Edge 將錯誤代碼 protocol.http.Response405WithoutAllowHeader
的 502 Bad
Gateway
傳回給
如果後端伺服器在沒有 Allow
標頭的情況下傳送 HTTP 狀態碼 405 Method Not
Allowed
,則用戶端應用程式。如要避免 Apigee Edge
將 502 Bad Gateway
傳送至用戶端應用程式,那麼您必須將
在訊息中將「HTTP.ignore.allow_header.for.405
」屬性設為 true
處理器:
本節說明如何設定資源
從HTTP.ignore.allow_header.for.405
到true
的
訊息處理器,按照
如何設定 Edge。
-
在訊息處理器電腦上,以編輯器開啟下列檔案。否則 並加以建立
/opt/apigee/customer/application/message-processor.properties
例如,如要使用「」開啟檔案, vi 後,輸入以下指令:
vi /opt/apigee/customer/application/message-processor.properties
- 在屬性檔案中加入以下格式的一行:
conf_http_HTTP.ignore.allow_header.for.405=true
- 儲存變更。
- 確認屬性檔案由
apigee
使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 重新啟動訊息處理器,如下所示:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您有多部訊息處理器,請針對所有「訊息」重複上述步驟。 處理器:
驗證訊息處理器的忽略允許標頭是否設為 true
本節將說明如何驗證資源
「HTTP.ignore.allow_header.for.405
」已成功更新為「true
」
訊息處理器
即使您使用 conf_http_HTTP.ignore.allow_header.for.405
權杖更新
訊息處理器上的屬性值,您必須驗證該屬性的實際屬性值
HTTP.ignore.allow_header.for.405
已設為 true
。
- 在訊息處理器電腦上搜尋屬性
HTTP.ignore.allow_header.for.405
是/opt/apigee/edge-message-processor/conf
目錄,並查看該目錄是否 已設定為true
,如下所示:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- 如果「訊息處理器」上的屬性已成功更新,則上述指令
應將
HTTP.ignore.allow_header.for.405
屬性的值顯示為http.properties
檔案中的true
,如下所示:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- 如果您仍看到
HTTP.ignore.allow_header.for.405
屬性的值: 請false
,確認您已遵循 將 405 屬性的「略過」標頭設為 true 訊息處理器。如果您漏掉任何步驟,請再次重複所有步驟 正確。 - 如果還是無法修改資源
HTTP.ignore.allow_header.for.405
,然後與 Apigee Edge 支援團隊聯絡。
將訊息處理器上的 405 屬性「忽略允許」標頭設為 false
本節說明如何設定資源
將 HTTP.ignore.allow_header.for.405
設為其預設值 false
訊息處理器,並按照
如何設定 Edge。
- 確認屬性
HTTP.ignore.allow_header.for.405
是否已修改為true
。您只要搜尋這項資源就能查看 位於/opt/apigee/edge-message-processor/conf
目錄中,然後檢查其 值:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- 如果訊息處理器上的屬性設為
true
,則上述指令 應顯示HTTP.ignore.allow_header.for.405
屬性的值http.properties
檔案中的true
,如下所示:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- 如果上述指令顯示
HTTP.ignore.allow_header.for.405
屬性 設為false
(預設值),則不必採取任何其他行動。也就是說 略過下列步驟。 - 如果屬性
HTTP.ignore.allow_header.for.405
設定為true
, 然後執行下列步驟,還原成預設值false
。 在訊息處理器電腦上,以編輯器開啟下列檔案:
/opt/apigee/customer/application/message-processor.properties
例如,如要使用「」開啟檔案, vi 後,輸入以下指令:
vi /opt/apigee/customer/application/message-processor.properties
- 從屬性檔案中移除下列這行文字:
conf_http_HTTP.ignore.allow_header.for.405=true
- 儲存變更。
- 確認屬性檔案由
apigee
使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 重新啟動訊息處理器,如下所示:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您有多部訊息處理器,請針對所有「訊息」重複上述步驟。 處理器:
驗證 405 屬性的忽略允許標頭在郵件處理器上已設為 false
本節將說明如何驗證資源
「HTTP.ignore.allow_header.for.405
」已成功更新為「false
」
訊息處理器
雖然使用
conf_http_HTTP.ignore.allow_header.for.405
即可更新訊息中的值
處理者,您必須驗證實際的屬性 HTTP.ignore.allow_header.for.405
已設為 false
。
- 在訊息處理器電腦上搜尋屬性
/opt/apigee/edge-message- processor/conf
目錄中的HTTP.ignore.allow_header.for.405
,檢查是否已設為false
(如圖所示) 如下:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- 如果「訊息處理器」上的屬性已成功更新,則上述指令
應將
HTTP.ignore.allow_header.for.405
屬性的值顯示為http.properties
檔案中的false
,如下所示:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- 如果您仍看到
HTTP.ignore.allow_header.for.405
屬性的值:true
,請確認您已遵循 將訊息處理器上的 405 屬性「忽略允許」標頭設為 false 正確。如果您漏掉任何步驟,請再次正確重複所有步驟。 - 如果還是無法修改資源
HTTP.ignore.allow_header.for.405
,然後與 Apigee Edge 支援團隊聯絡。