

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

# 將自訂標頭新增到原始伺服器請求
<a name="add-origin-custom-headers"></a>

您可以將 CloudFront 配置為將自訂標頭新增到傳送給您原始伺服器的請求。您可以使用自訂標頭傳送並收集來自原始伺服器的資訊，該資訊無法透過一般檢視器請求取得。您甚至可以針對每個原始伺服器自訂標頭。CloudFront 支援自訂原始伺服器和 Amazon S3 原始伺服器的自訂標頭。

**Contents**
+ [使用案例](#add-origin-custom-headers-use-cases)
+ [設定 CloudFront 以將自訂標頭新增到原始伺服器請求](#add-origin-custom-headers-configure)
+ [CloudFront 無法新增到原始伺服器請求的自訂標頭](#add-origin-custom-headers-denylist)
+ [設定 CloudFront 以轉送 `Authorization` 標頭](#add-origin-custom-headers-forward-authorization)

## 使用案例
<a name="add-origin-custom-headers-use-cases"></a>

您可以使用自訂標頭，例如下列範例：

**識別來自 CloudFront 的請求**  
您可以識別原始伺服器從 CloudFront 收到的請求。如果您想知道使用者正繞過 CloudFront，還是您正使用多個 CDN，並且想知道來自每個 CDN 的請求的資訊，這會是很實用的方法。  
如果您使用的是 Amazon S3 原始伺服器，並且啟用 [Amazon S3 伺服器存取記錄](https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html)，則日誌不包含標頭資訊。

**判斷哪些請求是來自特定分發**  
如果您將多個 CloudFront 分發配置為使用同一個原始伺服器，您可以在每個分發中新增不同的自訂標頭。然後，您可以使用來自原始伺服器的日誌，判斷哪些請求來自哪個 CloudFront 分發。

**啟用跨來源資源分享 (CORS)**  
如果某些檢視器不支援跨原始伺服器資源分享 (CORS)，您可以將 CloudFront 配置為一律將 `Origin` 標頭新增到傳送給您原始伺服器的請求。接著，您可以將原始伺服器設定為針對每個請求傳回 `Access-Control-Allow-Origin` 標頭。您也必須[配置 CloudFront ，才能遵循 CORS 設定](header-caching.md#header-caching-web-cors)。

**控制內容的存取**  
您可以使用自訂標頭來控制內容的存取。您可以將原始伺服器配置為只有在包含 CloudFront 所新增的自訂標頭時才回應請求，藉此防止使用者繞過 CloudFront 並直接在原始伺服器上存取您的內容。如需詳細資訊，請參閱[在自訂原始伺服器上限制存取檔案](private-content-overview.md#forward-custom-headers-restrict-access)。

## 設定 CloudFront 以將自訂標頭新增到原始伺服器請求
<a name="add-origin-custom-headers-configure"></a>

若要將分佈設定為將自訂標頭新增到傳送給您原始伺服器的請求，請使用下列其中一種方法來更新原始伺服器設定：
+ **CloudFront 主控台** – 當您建立或更新分佈時，請在**新增自訂標頭**設定中，指定標頭的名稱和值。如需詳細資訊，請參閱[新增自訂標頭](DownloadDistValuesOrigin.md#DownloadDistValuesOriginCustomHeaders)。
+ **CloudFront API** – 針對您要為其新增自訂標頭的每個原始伺服器，在 `Origin` 內的 `CustomHeaders` 欄位中指定標頭名稱和值。如需詳細資訊，請參閱《Amazon CloudFront API 參考》**中的 [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) 或 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。

如果您指定的標頭名稱和值尚未出現在檢視器請求中，CloudFront 會將它們新增到原始伺服器請求中。如果存在標頭，則在將請求轉送到原始伺服器之前，CloudFront 將覆寫標頭值。

如需套用至原始伺服器自訂標頭的配額，請參閱 [標頭的配額](cloudfront-limits.md#limits-custom-headers)。

## CloudFront 無法新增到原始伺服器請求的自訂標頭
<a name="add-origin-custom-headers-denylist"></a>

您無法將 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-Authenticate`
+ `Proxy-Authorization`
+ `Proxy-Connection`
+ `Range`
+ `Request-Range`
+ `TE`
+ `Trailer`
+ `Transfer-Encoding`
+ `Upgrade`
+ `Via`
+ 以 `X-Amz-` 做為開頭的標頭
+ 以 `X-Edge-` 做為開頭的標頭
+ `X-Real-Ip`

## 設定 CloudFront 以轉送 `Authorization` 標頭
<a name="add-origin-custom-headers-forward-authorization"></a>

當 CloudFront 將檢視器請求轉送至您的原始伺服器時，CloudFront 預設會移除某些檢視器標頭，包括 `Authorization` 標頭。為了確保您的原始伺服器始終收到原始伺服器請求中的 `Authorization` 標頭，您有以下選項：
+ 使用快取政策將 `Authorization` 標頭新增至快取金鑰。快取金鑰中的所有標頭都會自動包含在原始伺服器請求中。如需詳細資訊，請參閱[使用政策控制快取金鑰](controlling-the-cache-key.md)。
+ 使用將所有檢視器標頭轉寄至原始伺服器的原始伺服器請求政策。您無法在原始伺服器請求政策中個別轉寄 `Authorization` 標頭，但當您轉寄所有檢視器標頭時，CloudFront 會在檢視器請求中包含 `Authorization` 標頭。CloudFront 為此使用案例提供受管的原始伺服器請求政策，稱為 **Managed-AllViewer**。如需詳細資訊，請參閱[使用受管原始伺服器請求政策](using-managed-origin-request-policies.md)。