追蹤工作階段中的 HTTP 304 回應

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

問題

在「Edge for Private Cloud」(私有雲) 中,當在 Edge UI 中追蹤 API 時,追蹤記錄視窗的「Status」欄中會顯示 HTTP 304 回應:

錯誤訊息

沒有任何錯誤訊息 - API Proxy 呼叫實際上會傳回成功回應,例如 HTTP 200。但是 Edge UI 的追蹤視窗會顯示 HTTP 304 回應,且不會收集任何追蹤資料。

可能原因

在 Private Cloud 的 Edge 中,Edge UI 會嘗試追蹤透過私人 IP 位址存取的 API Proxy。

Edge UI 中的追蹤工具能夠將 API 要求傳送至任何網址。在將 Edge UI 與其他內部服務共同託管的部署情境中,惡意使用者可能會濫用追蹤記錄工具,透過私人 IP 位址 (例如 localhost 或 127.0.0.1) 向服務發出要求。

在實際工作環境中,您通常會保留預設值,以防止使用者追蹤私人 IP 位址。舉例來說,這就是 Edge UI 公開版本的部署方式。

不過,如果是內部開發或測試環境,您可以覆寫這個預設值,讓 API 開發人員追蹤任何 IP 位址。一般來說,開發/測試環境的防火牆往往位於不允許公開存取的防火牆後方。

注意: 最佳做法是,建議您保留預設值,防止在開發/測試環境中追蹤私人 IP 位址的追蹤記錄存取權,除非您遇到必須啟用私人 IP 位址的情況。

原因:嘗試透過私人 IP 位址存取 API Proxy

根據預設,Edge Edge 的 Edge UI 不會追蹤透過私人 IP 位址發出的 API 呼叫。私人 IP 位址清單包括:

  • 回送位址 (127.0.0.1 或 localhost)
  • 網站本機位址 (適用於 IPv4 - 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
  • 任何本機位址 (任何解析至 localhost 的位址)

舉例來說,下列 curl 指令會使用 127.0.0.1 的 IP 位址呼叫 API Proxy (視為私人 IP 位址):

curl http://127.0.0.1:9001/myapiproxy

在這個呼叫的追蹤視窗中,即使 curl 指令傳回成功,您仍會看到 HTTP 304 回應。

解析度

如要讓 Edge UI 追蹤 Edge 的 Edge 私人 IP 位址,請在 ui.properties 中設定下列權杖:

conf_apigee-base_apigee.feature.enabletraceforinternaladdresses="true"

如要設定這項屬性,請按照下列指示操作:

  1. 在編輯器中開啟 ui.properties 檔案。如果檔案不存在,請建立檔案。
    vi /opt/apigee/customer/application/ui.properties
  2. 請將下列屬性設為 true:
    conf_apigee-base_apigee.feature.enabletraceforinternaladdresses="true"
  3. 儲存您對「ui.properties」所做的變更。
  4. 確認屬性檔案為「apigee」使用者擁有:
    chown apigee:apigee /opt/apigee/customer/application/ui.properties
  5. 重新啟動 Edge UI:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

Edge UI 現在可以在追蹤記錄工具中存取私人 IP 位址。

日後如要停用 UI 以停止透過私人 IP 位址追蹤要求,請編輯 ui.properties 將屬性設為 false,然後重新啟動 Edge UI。

詳情請參閱「 允許邊緣 UI 存取本機 IP 位址」。