將自訂標頭新增至原始請求 - Amazon CloudFront

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

將自訂標頭新增至原始請求

您可以設定 CloudFront 為將自訂標頭新增至傳送至原始伺服器的請求。您可以使用自定義標題從您的來源發送和收集典型查看者請求中未獲得的信息。您甚至可以自定義每個來源的標題。 CloudFront支援自訂起源和 Amazon S3 起源的自訂標頭。

使用案例

您可以使用自訂標頭,例如下列範例:

識別要求 CloudFront

您可以識別來源接收的請求 CloudFront。如果您想知道用戶是否繞過 CloudFront,或者您正在使用多個 CDN 並且需要有關來自每個 CDN 的請求的信息,此功能非常有用。

注意

如果您使用的是 Amazon S3 原始伺服器,並且啟用 Amazon S3 伺服器存取記錄,則日誌不包含標頭資訊。

判斷哪些請求是來自特定分發

如果您將多個 CloudFront 發行版設定為使用相同的來源,則可以在每個發行版中新增不同的自訂標頭。然後,您可以使用來自來源的日誌來確定哪些請求來自哪個 CloudFront分發。

啟用跨來源資源分享 (CORS)

如果某些檢視器不支援跨來源資源共用 (CORS),您可以設定為永遠將Origin標頭新增 CloudFront 至傳送至原始伺服器的請求。接著,您可以將原始伺服器設定為針對每個請求傳回 Access-Control-Allow-Origin 標頭。您還必須CloudFront 進行配置以遵守 CORS 設置

控制內容的存取

您可以使用自訂標頭來控制內容的存取。透過將您的來源設定為僅在包含新增的自訂標頭時才回應要求 CloudFront,您可以防止使用者直接在來源略過 CloudFront 和存取您的內容。如需詳細資訊,請參閱 限制存取自訂原始伺服器上的檔案

設定 CloudFront 為將自訂標頭新增至原始請求

若要將分佈設定為將自訂標頭新增到傳送給您原始伺服器的請求,請使用下列其中一種方法來更新原始伺服器設定:

  • CloudFront 控制台 — 當您創建或更新發行版時,請在添加自定義標題設置中指定標題名稱和值。如需詳細資訊,請參閱 新增自訂標頭

  • CloudFront API — 對於您要新增自訂標頭的每個來源,請在其中的CustomHeaders欄位中指定標題名稱和值Origin。如需詳細資訊,請參閱 Amazon CloudFront API 參考資料UpdateDistribution中的CreateDistribution或。

如果您指定的標頭名稱和值尚未出現在檢視器要求中,請 CloudFront 將它們新增至原始請求。如果標頭存在,則在將請求轉發到來源之前 CloudFront 覆蓋標頭值。

如需適用於來源自訂標頭的配額,請參閱標頭的配額

無法新增至原始請求的 CloudFront 自訂標頭

您無法設定 CloudFront 為將下列任何標頭新增至傳送至原始伺服器的請求:

  • Cache-Control

  • Connection

  • Content-Length

  • Cookie

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Pragma

  • Proxy-Authorization

  • Proxy-Connection

  • Range

  • Request-Range

  • TE

  • Trailer

  • Transfer-Encoding

  • Upgrade

  • Via

  • X-Amz- 做為開頭的標頭

  • X-Edge- 做為開頭的標頭

  • X-Real-Ip

設定 CloudFront 以轉寄標Authorization

將查看者請求 CloudFront 轉發到您的來源時,默認情況下 CloudFront 會刪除一些查看器標題,包括標Authorization題。為了確保您的原始伺服器始終收到原始伺服器請求中的 Authorization 標頭,您有以下選項:

  • 使用快取政策將 Authorization 標頭新增至快取金鑰。快取金鑰中的所有標頭都會自動包含在原始伺服器請求中。如需詳細資訊,請參閱 使用政策控制快取金鑰

  • 使用將所有檢視器標頭轉寄至原始伺服器的原始伺服器請求政策。您無法在原始要求原則中個別轉寄標Authorization頭,但是當您轉寄所有檢視器標頭時,都會在檢視器要求中 CloudFront 包含標Authorization頭。 CloudFront 為此使用案例提供受管理的原始要求原則,稱為 Managed-AllViewer。如需更多詳細資訊,請參閱 使用受管理的原始要求原