在訊息處理工具中設定 405 屬性的允許允許標頭

查看 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

舉例來說,如果您的後端伺服器允許 GETPOSTHEAD 方法,請務必確保 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

事前準備

使用本文件中的步驟前,請務必先瞭解下列主題:

將訊息處理器上的 405 屬性「忽略允許」標頭設為 true

在 Apigee Edge 中,HTTP.ignore.allow_header.for.405 屬性已設為 預設為 false。這可讓 Apigee Edge 將錯誤代碼 protocol.http.Response405WithoutAllowHeader502 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.405true的 訊息處理器,按照 如何設定 Edge

  1. 在訊息處理器電腦上,以編輯器開啟下列檔案。否則 並加以建立

    /opt/apigee/customer/application/message-processor.properties
    

    例如,如要使用「」開啟檔案, vi 後,輸入以下指令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 在屬性檔案中加入以下格式的一行:
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  3. 儲存變更。
  4. 確認屬性檔案由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 重新啟動訊息處理器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 如果您有多部訊息處理器,請針對所有「訊息」重複上述步驟。 處理器:

驗證訊息處理器的忽略允許標頭是否設為 true

本節將說明如何驗證資源 「HTTP.ignore.allow_header.for.405」已成功更新為「true」 訊息處理器

即使您使用 conf_http_HTTP.ignore.allow_header.for.405 權杖更新 訊息處理器上的屬性值,您必須驗證該屬性的實際屬性值 HTTP.ignore.allow_header.for.405已設為 true

  1. 在訊息處理器電腦上搜尋屬性 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
    
  2. 如果「訊息處理器」上的屬性已成功更新,則上述指令 應將 HTTP.ignore.allow_header.for.405 屬性的值顯示為 http.properties 檔案中的 true,如下所示:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. 如果您仍看到 HTTP.ignore.allow_header.for.405 屬性的值: 請false,確認您已遵循 將 405 屬性的「略過」標頭設為 true 訊息處理器。如果您漏掉任何步驟,請再次重複所有步驟 正確。
  4. 如果還是無法修改資源 HTTP.ignore.allow_header.for.405,然後與 Apigee Edge 支援團隊聯絡。

將訊息處理器上的 405 屬性「忽略允許」標頭設為 false

本節說明如何設定資源 將 HTTP.ignore.allow_header.for.405 設為其預設值 false 訊息處理器,並按照 如何設定 Edge

  1. 確認屬性 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
    
  2. 如果訊息處理器上的屬性設為 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
    
  3. 如果上述指令顯示 HTTP.ignore.allow_header.for.405 屬性 設為 false (預設值),則不必採取任何其他行動。也就是說 略過下列步驟。
  4. 如果屬性 HTTP.ignore.allow_header.for.405 設定為 true, 然後執行下列步驟,還原成預設值 false
  5. 在訊息處理器電腦上,以編輯器開啟下列檔案:

    /opt/apigee/customer/application/message-processor.properties
    

    例如,如要使用「」開啟檔案, vi 後,輸入以下指令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. 從屬性檔案中移除下列這行文字:
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  7. 儲存變更。
  8. 確認屬性檔案由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. 重新啟動訊息處理器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. 如果您有多部訊息處理器,請針對所有「訊息」重複上述步驟。 處理器:

驗證 405 屬性的忽略允許標頭在郵件處理器上已設為 false

本節將說明如何驗證資源 「HTTP.ignore.allow_header.for.405」已成功更新為「false」 訊息處理器

雖然使用 conf_http_HTTP.ignore.allow_header.for.405 即可更新訊息中的值 處理者,您必須驗證實際的屬性 HTTP.ignore.allow_header.for.405 已設為 false

  1. 在訊息處理器電腦上搜尋屬性 /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
    
  2. 如果「訊息處理器」上的屬性已成功更新,則上述指令 應將 HTTP.ignore.allow_header.for.405 屬性的值顯示為 http.properties 檔案中的 false,如下所示:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
    
  3. 如果您仍看到 HTTP.ignore.allow_header.for.405 屬性的值: true,請確認您已遵循 將訊息處理器上的 405 屬性「忽略允許」標頭設為 false 正確。如果您漏掉任何步驟,請再次正確重複所有步驟。
  4. 如果還是無法修改資源 HTTP.ignore.allow_header.for.405,然後與 Apigee Edge 支援團隊聯絡。