本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增 CloudFront 請求標頭
您可以設定 CloudFront ,將特定HTTP標頭新增至從檢視者 CloudFront 接收的請求,然後轉送到原始伺服器或邊緣函數 。這些HTTP標頭的值取決於檢視器或檢視器請求的特性。標頭提供有關檢視器的裝置類型、IP 地址、地理位置、請求通訊協定 (HTTP 或 HTTPS)、HTTP版本、TLS連線詳細資訊、JA3指紋
有了這些標題,您的原始伺服器或邊緣函數即可接收有關檢視器的資訊,而不需要您編寫自己的程式碼來判斷此資訊。如果您的原始伺服器根據這些標頭中的資訊傳回不同的回應,您可以將它們包含在快取金鑰中,以便分別 CloudFront 快取回應。例如,您的原始伺服器可能會根據檢視器所在國家/地區使用特定語言的內容進行回應,或者使用針對特定裝置類型訂製的內容。您的原始伺服器還可能會將這些標頭寫入日誌檔案,您可以使用這些檔案來確定有關檢視器所在位置、檢視器所在的裝置類型等資訊。
如果您想要在快取金鑰中包含標頭,請使用快取政策。如需更多詳細資訊,請參閱 使用政策控制快取金鑰 及 瞭解快取金鑰。
要在原始伺服器中接收這些表頭,但不將它們包含在快取金鑰中,請使用原始伺服器請求政策。如需詳細資訊,請參閱使用原則控制原始要求。
用於判斷檢視器裝置類型的標頭
可以新增下列標頭來判斷檢視者的裝置類型。根據User-Agent
標頭的值, 會將這些標頭的值 CloudFront 設定為 true
或 false
。如果裝置屬於多個類別,一個以上的值可以是 true
。例如,對於某些平板電腦裝置, CloudFront 會將 CloudFront-Is-Mobile-Viewer
和 CloudFront-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-Address
和CloudFront-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-City
、 CloudFront-Viewer-Metro-Code
和 CloudFront-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-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。
-