新增 CloudFront 請求標頭 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

新增 CloudFront 請求標頭

您可以設定 CloudFront ,將特定HTTP標頭新增至從檢視者 CloudFront 接收的請求,然後轉送到原始伺服器或邊緣函數 。這些HTTP標頭的值取決於檢視器或檢視器請求的特性。標頭提供有關檢視器的裝置類型、IP 地址、地理位置、請求通訊協定 (HTTP 或 HTTPS)、HTTP版本、TLS連線詳細資訊、JA3指紋 和JA4指紋的資訊。

有了這些標題,您的原始伺服器或邊緣函數即可接收有關檢視器的資訊,而不需要您編寫自己的程式碼來判斷此資訊。如果您的原始伺服器根據這些標頭中的資訊傳回不同的回應,您可以將它們包含在快取金鑰中,以便分別 CloudFront 快取回應。例如,您的原始伺服器可能會根據檢視器所在國家/地區使用特定語言的內容進行回應,或者使用針對特定裝置類型訂製的內容。您的原始伺服器還可能會將這些標頭寫入日誌檔案,您可以使用這些檔案來確定有關檢視器所在位置、檢視器所在的裝置類型等資訊。

如果您想要在快取金鑰中包含標頭,請使用快取政策。如需更多詳細資訊,請參閱 使用政策控制快取金鑰瞭解快取金鑰

要在原始伺服器中接收這些表頭,但不將它們包含在快取金鑰中,請使用原始伺服器請求政策。如需詳細資訊,請參閱使用原則控制原始要求

用於判斷檢視器裝置類型的標頭

可以新增下列標頭來判斷檢視者的裝置類型。根據User-Agent標頭的值, 會將這些標頭的值 CloudFront 設定為 truefalse。如果裝置屬於多個類別,一個以上的值可以是 true。例如,對於某些平板電腦裝置, CloudFront 會將 CloudFront-Is-Mobile-ViewerCloudFront-Is-Tablet-Viewer設定為 true

  • CloudFront-Is-Android-Viewer – 當 true CloudFront 確定檢視器是具有 Android 作業系統的裝置時,設定為 。

  • CloudFront-Is-Desktop-Viewer – 當 CloudFront 確定檢視器是桌面裝置true時,設定為 。

  • CloudFront-Is-IOS-Viewer – 當 CloudFront 確定檢視器是具有 Apple 行動作業系統的裝置true時,設定為 ,例如 iPhone、 iPod 觸控和某些 iPad 裝置。

  • CloudFront-Is-Mobile-Viewer – 當 CloudFront 確定檢視器是行動裝置true時,設定為 。

  • CloudFront-Is-SmartTV-Viewer – 當 CloudFront 確定檢視器是智慧型電視true時,設定為 。

  • CloudFront-Is-Tablet-Viewer – 當 true CloudFront 確定檢視器是平板電腦時,設定為 。

用於判斷檢視器位置的標頭

您可以新增下列標頭來判斷檢視器的位置。 會根據檢視器的 IP 地址 CloudFront 來決定這些標頭的值。對於這些標頭值中的非ASCII字元, CloudFront 百分比會根據 RFC3986 的第 1.2 節來編碼字元。

  • CloudFront-Viewer-Address - 包含檢視者 IP 地址以及請求的來源連接埠,例如標頭值 198.51.100.10:46532 表示瀏覽器的 IP 地址是 198.51.100.10,請求來源連接埠是 46532。

  • CloudFront-Viewer-ASN – 包含檢視器的自主系統編號 (ASN)。

    注意

    CloudFront-Viewer-AddressCloudFront-Viewer-ASN 可以在原始伺服器請求政策中新增,而不是在快取政策中新增。

  • CloudFront-Viewer-Country – 包含檢視器國家/地區的兩個字母國家/地區代碼。如需國家/地區代碼清單,請參閱 ISO 3166-1 alpha-2

  • CloudFront-Viewer-City - 包含檢視器所在城市的名稱。

當您新增下列標頭時, 會 CloudFront 套用至所有請求,源自 AWS 網路的請求除外:

  • CloudFront-Viewer-Country-Name – 包含檢視器所在國家/地區的名稱。

  • CloudFront-Viewer-Country-Region – 包含代表檢視器區域的代碼 (最多三個字元)。區域是 ISO3166-2 程式碼的第一層子區段 (最廣泛或最不具體)。

  • CloudFront-Viewer-Country-Region-Name – 包含檢視器區域的名稱。區域是 ISO3166-2 程式碼的第一層子區段 (最廣泛或最不具體)。

  • CloudFront-Viewer-Latitude – 包含檢視器的約略緯度。

  • CloudFront-Viewer-Longitude – 包含檢視器的約略經度。

  • CloudFront-Viewer-Metro-Code – 包含檢視器的地鐵代碼。只有當檢視器在美國時,才會出現此問題。

  • CloudFront-Viewer-Postal-Code – 包含檢視器的郵遞區號。

  • CloudFront-Viewer-Time-Zone 包含檢視器的時區,採用IANA時區資料庫格式 (例如 America/Los_Angeles)。

注意

CloudFront-Viewer-CityCloudFront-Viewer-Metro-CodeCloudFront-Viewer-Postal-Code可能無法用於每個 IP 地址。某些 IP 地址無法以足夠的特異性進行地理位置定位,以取得該資訊。

用於判斷檢視者標頭結構的標頭

您可以新增下列標頭,協助根據檢視者傳送的標頭來識別檢視者。例如,不同的瀏覽器可能會以特定順序傳送HTTP標頭。若 User-Agent 標頭中指定的瀏覽器與該瀏覽器的預期標頭順序不同,您可以拒絕該請求。此外,若 CloudFront-Viewer-Header-Count 值與 CloudFront-Viewer-Header-Order 中的標頭數量不同,您也可以拒絕該請求。

  • CloudFront-Viewer-Header-Order – 按要求的順序包含檢視者的標頭名稱,並以冒號分隔。例如:CloudFront-Viewer-Header-Order: Host:User-Agent:Accept:Accept-Encoding。超出 7,680 字元限制的標頭會被截斷。

  • CloudFront-Viewer-Header-Count – 包含檢視者標頭的總數。

其他 CloudFront 標頭

您可以新增下列標頭,以判斷檢視器的原始請求 URI、原始請求查詢字串參數和值、通訊協定、版本、JA3指紋和TLS連線詳細資訊:

  • CloudFront-Error-Args – 包含從檢視器URI收到的原始請求。

  • CloudFront-Error-Uri – 包含原始請求查詢字串參數和值。

  • CloudFront-Forwarded-Proto – 包含檢視器請求的通訊協定 (HTTP 或 HTTPS)。

  • CloudFront-Viewer-Http-Version – 包含檢視器請求的HTTP版本。

  • CloudFront-Viewer-JA3-Fingerprint – 包含檢視器的JA3指紋。JA3 指紋可協助您判斷請求是來自已知用戶端,無論是惡意軟體還是惡意機器人,還是預期的 (允許列出) 應用程式。此標頭依賴檢視器的 SSL/TLS Client Hello封包,且僅存在HTTPS請求。

    注意

    您可以在原始伺服器請求政策中新增 CloudFront-Viewer-JA3-Fingerprint,而不需要在快取政策中新增。

  • CloudFront-Viewer-TLS – 包含用於檢視器與 之間連線的SSL/TLS version, the cipher, and information about the SSL/TLS交握 CloudFront。標頭值的格式如下:

    SSL/TLS_version:cipher:handshake_information

    對於 handshake_information,標頭可包含下列值:

    • fullHandshake – 已針對 SSL/TLS 工作階段執行完整的交握。

    • sessionResumed – 上一個 SSL/TLS 工作階段已繼續。

    • connectionReused – 重複使用先前的 SSL/TLS 連線。

    下列是此標頭的一些範例值:

    TLSv1.3:TLS_AES_128_GCM_SHA256:sessionResumed
    TLSv1.2:ECDHE-ECDSA-AES128-GCM-SHA256:connectionReused
    TLSv1.1:ECDHE-RSA-AES128-SHA256:fullHandshake
    TLSv1:ECDHE-RSA-AES256-SHA:fullHandshake

    如需此標頭值中可能 SSL/TLS 版本和密碼的完整清單,請參閱 檢視器與之間支援的通訊協定和密碼 CloudFront

    注意

    您可以在原始伺服器請求政策中新增 CloudFront-Viewer-TLS,而不需要在快取政策中新增。