

# オリジンリクエストにカスタムヘッダーを追加する
<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)
+ [`Authorization` ヘッダーを転送するように CloudFront を設定する](#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 ディストリビューションから来たのかを判断できます。

**Cross-Origin Resource Sharing (CORS) の有効化**  
ビューワーの一部が Cross-Origin Resource Sharing (CORS) をサポートしていない場合は、オリジンに送信されるリクエストに `Origin` ヘッダーを常に追加するように CloudFront を設定できます。次に、リクエストごとに `Access-Control-Allow-Origin` ヘッダーを返すようにオリジンを設定できます。[CORS 設定を適用するように CloudFront を設定する](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`

## `Authorization` ヘッダーを転送するように CloudFront を設定する
<a name="add-origin-custom-headers-forward-authorization"></a>

ビューワーリクエストをオリジンに転送する際、CloudFront はデフォルトで一部のビューワーヘッダー (`Authorization` ヘッダーを含む) を削除します。オリジンがオリジンリクエストの `Authorization` ヘッダーを常に受け取るようにするには、次のオプションがあります。
+ キャッシュポリシーを使用して、`Authorization` ヘッダーをキャッシュキーに追加します。キャッシュキー内のすべてのヘッダーは、オリジンリクエストに自動的に含まれます。詳細については、「[ポリシーを使用してキャッシュキーを制御する](controlling-the-cache-key.md)」を参照してください。
+ オリジンリクエストポリシーを使用し、すべてのビューワーヘッダーをオリジンに転送します。オリジンリクエストポリシーで `Authorization` ヘッダーを個別に転送することはできません。ただし、ビューワーヘッダーをすべて転送する場合には、`Authorization` ヘッダーが CloudFront によりビューワーリクエストに含められます。CloudFront では、このユースケースのために、**Managed-AllViewer** と呼ばれるマネージド型のオリジンリクエストポリシーが提供されています。詳細については、「[マネージドオリジンリクエストポリシーを使用する](using-managed-origin-request-policies.md)」を参照してください。