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

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

問題

在 Edge for Private Cloud 中,於 Edge UI 追蹤 API 時,您會在追蹤視窗的「狀態」欄中看到 HTTP 304 回應:

錯誤訊息

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

可能原因

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

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

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

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

注意: 最佳做法是保留預設值,以免追蹤存取私人 IP 位址,即使在開發/測試環境中也是如此,除非您遇到必須啟用此設定的情況。

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

根據預設,Edge for Private Cloud 的 Edge 使用者介面會禁止使用者追蹤透過私人 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 for Private Cloud 的私人 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。

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