レスポンスヘッダーポリシーの理解 - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

レスポンスヘッダーポリシーの理解

レスポンスヘッダーポリシーを使用して、Amazon がビューワーに送信するレスポンスで CloudFront 削除または追加する HTTP ヘッダーを指定できます。レスポンスヘッダーポリシーおよびそれらを使用する理由の詳細については、「レスポンスでの CloudFront HTTP ヘッダーの追加または削除」を参照してください。

以下のトピックでは、レスポンスヘッダーポリシーの設定について説明します。設定はカテゴリに分類され、そのことについて次のトピックで説明します。

ポリシーの詳細 (メタデータ)

ポリシーの詳細設定には、レスポンスヘッダーポリシーに関するメタデータが含まれます。

  • 名前 - レスポンスヘッダーポリシーを識別するための名前。コンソールでは、名前を使用して、このポリシーをキャッシュ動作にアタッチします。

  • 説明 (オプション) - レスポンスヘッダーポリシーを説明するコメント。これはオプションですが、このポリシーの目的を特定するのに役立ちます。

CORS ヘッダー

Cross-Origin Resource Sharing (CORS) 設定を使用して、レスポンスヘッダーポリシーに CORS ヘッダーを追加および設定できます。

このリストは、レスポンスヘッダーポリシーの設定および有効な値の指定方法に焦点を合わせています。これらの各ヘッダーと、実際の CORS リクエストとレスポンスの使用方法の詳細については、MDN ウェブドキュメントと CORS プロトコルの仕様にある「クロスオリジンリソース共有」を参照してください。

Access-Control-Allow-Credentials

これは、CORS リクエストへのレスポンスに Access-Control-Allow-Credentialsヘッダー CloudFront を追加するかどうかを決定するブール設定 (true または false) です。この設定が に設定されている場合true、 は CORS リクエストへのレスポンスに Access-Control-Allow-Credentials: trueヘッダー CloudFront を追加します。それ以外の場合は、このヘッダーをレスポンスに追加 CloudFront しません。

Access-Control-Allow-Headers

CORS プリフライトリクエストへのレスポンスで、 が ヘッダーの値 CloudFront として使用するAccess-Control-Allow-Headersヘッダー名を指定します。この設定の有効な値には、HTTP ヘッダー名、またはすべてのヘッダーを許可することを示すワイルドカード文字 (*) が含まれます。Authorization ヘッダーにはワイルドカードを使用できず、常に明示的にリストする必要があることに注意してください。

ワイルドカード文字の有効な使用例を次の表に示します。

一致する 一致しない

x-amz-*

x-amz-test

x-amz-

x-amz

x-*-amz

x-test-amz

x--amz

* Authorization を除くすべてのヘッダー Authorization
Access-Control-Allow-Methods

CORS プリフライトリクエストへのレスポンスの Access-Control-Allow-Methodsヘッダーの値として が CloudFront 使用する HTTP メソッドを指定します。有効な値は、GETDELETEHEADOPTIONSPATCHPOSTPUTALL です。ALL は、リストされているすべての HTTP メソッドが含まれている特別な値です。

Access-Control-Allow-Origin

Access-Control-Allow-Originレスポンスヘッダー CloudFront で使用できる値を指定します。この設定の有効な値には、特定のオリジン (http://www.example.com など)、またはすべてのオリジンを許可することを示すワイルドカード文字 (*) が含まれます。次の表の例を参照してください。

注記

ワイルドカード文字 (*) は、ドメイン (*.example.org) の左端部分として使用できます。

ワイルドカード文字 (*) は以下の位置では使用できません

  • 最上位ドメイン (example.*)

  • サブドメイン (test.*.example.org) の右側

  • 規約の内部 (exa*mple.org)

ワイルドカード文字の有効な使用例を次の表に示します。

一致する 一致しない

http://*.example.org

http://www.example.com

http://test.example.org

http://test.example.org:123

https://test.example.org

https://test.example.org:123

*.example.org

test.example.org

test.test.example.org

.example.org

http://test.example.org

https://test.example.org

http://test.example.org:123

https://test.example.org:123

example.org

http://example.org

https://example.org

http://example.org

https://example.org

http://example.org:123

http://example.org:*

http://example.org:123

http://example.org

http://example.org:1*3

http://example.org:123

http://example.org:1893

http://example.org:13

*.example.org:1*

test.example.org:123

Access-Control-Expose-Headers

CORS リクエストへのレスポンスで ヘッダーの値として が CloudFront 使用するAccess-Control-Expose-Headersヘッダー名を指定します。この設定の有効な値には、HTTP ヘッダー名、またはワイルドカード文字 (*) が含まれます。

Access-Control-Max-Age

CORS プリフライトリクエストへのレスポンスの Access-Control-Max-Ageヘッダーの値として CloudFront を使用する秒数。

オリジンのオーバーライド

これは、オリジンからのレスポンスに、ポリシーにも含まれている CORS ヘッダーの 1 つが含まれている場合 CloudFront の動作を決定するブール値設定 (true または false) です。

この設定が に設定trueされ、オリジンレスポンスにポリシーにも CORS ヘッダーが含まれている場合、 はビューワーに送信するレスポンスにポリシーの CORS ヘッダー CloudFront を追加します。オリジンから受け取ったヘッダーは無視されます。

この設定が falseで、オリジンレスポンスにポリシーにも CORS ヘッダーが含まれている場合、ビューワーに送信するレスポンスにオリジンから受信した CORS ヘッダー CloudFront が含まれます。

オリジンレスポンスにポリシー内の CORS ヘッダーが含まれていない場合、 はポリシー内の CORS ヘッダーを、この設定が trueまたは に設定されている場合に viewer. CloudFront does に送信するレスポンス CloudFront に追加しますfalse

セキュリティヘッダー

セキュリティヘッダーの設定を使用して、レスポンスヘッダーポリシーでいくつかのセキュリティ関連の HTTP レスポンスヘッダーを追加および設定できます。

このリストは、レスポンスヘッダーポリシーの設定および有効な値の指定方法を示しています。これらの各ヘッダー、および実際の HTTP レスポンスでの使用方法の詳細については、MDN ウェブドキュメントへのリンクを参照してください。

Content-Security-Policy

Content-Security-Policyレスポンスヘッダーの値 CloudFront として使用するコンテンツセキュリティポリシーディレクティブを指定します。

このヘッダーと有効なポリシーディレクティブの詳細については、MDN Web ドキュメントにある「Content-Security-Policy」を参照してください。

注記

Content-Security-Policy ヘッダー値は 1,783 文字に限定されます。

リファラーポリシー

Referrer-Policyレスポンスヘッダーの値 CloudFront として使用するリファラポリシーディレクティブを指定します。この設定の有効値は、no-referrerno-referrer-when-downgradeoriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-originunsafe-url です。

このヘッダーおよびこれらのディレクティブの詳細については、MDN Web ドキュメントにある「Referrer-Policy」を参照してください。

Strict-Transport-Security

Strict-Transport-Securityレスポンスヘッダーの値 CloudFront として使用するディレクティブと設定を指定します。この設定では、以下を個別に指定します。

  • このヘッダーの max-ageディレクティブの値として CloudFront を使用する秒数

  • のブール設定 (true または falsepreload。このヘッダーの値に preloadディレクティブ CloudFront を含めるかどうかを決定します。

  • のブール設定 (true または falseincludeSubDomains。このヘッダーの値に includeSubDomainsディレクティブを含めるかどうか CloudFrontを決定します。

このヘッダーおよびこれらのディレクティブの詳細については、MDN Web ドキュメントにある「Strict-Transport-Security」を参照してください。

X-Content-Security-Policy

これは、 が X-Content-Type-Optionsヘッダーをレスポンス CloudFront に追加するかどうかを決定するブール設定 (true または false) です。この設定が の場合true、 は X-Content-Type-Options: nosniffヘッダーをレスポンス CloudFront に追加します。そう CloudFront しないと、 はこのヘッダーを追加しません。

このヘッダーの詳細については、MDN Web ドキュメントにある「X-Content-Type-Options」を参照してください。

X-Frame-Options

X-Frame-Optionsレスポンスヘッダーの値 CloudFront として使用する ディレクティブを指定します。この設定の有効値は、DENY または SAMEORIGIN です。

このヘッダーおよびこれらのディレクティブの詳細については、MDN Web ドキュメントにある「X-Frame-Options」を参照してください。

X-XSS-Protection

X-XSS-Protectionレスポンスヘッダーの値 CloudFront として使用するディレクティブと設定を指定します。この設定では、以下を個別に指定します。

  • X-XSS-Protection (XSS フィルタリングを無効にする) または 0 (XSS フィルタリングを有効にする) についての 1 の設定設定

  • のブール設定 (true または falseblock。このヘッダーの値に mode=blockディレクティブ CloudFront を含めるかどうかを決定します。

  • レポート URI。このヘッダーの値に report=reporting URIディレクティブ CloudFront を含めるかどうかを決定します。

block のために true を指定することができます。または、レポートの URI を指定することもできますが、両方一緒に指定することはできません。このヘッダーおよびこれらのディレクティブの詳細については、MDN Web ドキュメントにある「X-XSS-Protection」を参照してください。

オリジンのオーバーライド

これらの各セキュリティヘッダー設定には、オリジンからのレスポンスにそのヘッダーが含まれている場合 CloudFront の動作を決定するブール値設定 (true または false) が含まれています。

この設定が に設定trueされ、オリジンレスポンスに ヘッダーが含まれている場合、 はビューワーに送信するレスポンスにポリシーの ヘッダー CloudFront を追加します。オリジンから受け取ったヘッダーは無視されます。

この設定が に設定falseされ、オリジンレスポンスに ヘッダーが含まれている場合、 はビューワーに送信するレスポンスにオリジンから受信したヘッダー CloudFront を含めます。

オリジンレスポンスに ヘッダーが含まれていない場合、 は、ビューワーに送信するレスポンスにポリシーの ヘッダー CloudFront を追加します。この設定が trueまたは に設定されていると、この設定が CloudFront 実行されますfalse

カスタムヘッダー

カスタムヘッダー設定を使用して、レスポンスヘッダーポリシーでカスタム HTTP ヘッダーを追加および設定できます。 は、ビューワーに返されるすべてのレスポンスにこれらのヘッダー CloudFront を追加します。カスタムヘッダーごとにヘッダーの値も指定しますが、値の指定はオプションです。これは、 CloudFront が値なしでレスポンスヘッダーを追加できるためです。

また各カスタムヘッダーには、独自のオリジンのオーバーライドの設定があります。

  • この設定が に設定trueされ、オリジンレスポンスにポリシー内のカスタムヘッダーが含まれている場合、 はビューワーに送信するレスポンスにポリシー内のカスタムヘッダー CloudFront を追加します。オリジンから受け取ったヘッダーは無視されます。

  • この設定が falseで、オリジンレスポンスにポリシー内のカスタムヘッダーが含まれている場合、 はビューワーに送信するレスポンスに、オリジンから受信したカスタムヘッダー CloudFront を含めます。

  • オリジンレスポンスにポリシー内のカスタムヘッダーが含まれていない場合、 は、この設定が trueまたは に設定されているときに、ビューワー. CloudFront does に送信するレスポンスにポリシー内のカスタムヘッダー CloudFront を追加しますfalse

ヘッダーを削除

オブジェクトが の CloudFrontキャッシュから提供されるか、オリジンから送信されるかにかかわらず、 がビューワー CloudFront に送信するすべてのレスポンスにヘッダーが含まれないように、オリジンから CloudFront 受信するレスポンスから削除するヘッダーを指定できます。 は、ビューワーに送信するすべてのレスポンスからヘッダー CloudFront を削除します。例えば、 X-Powered-Byや などのブラウザでは使用されていないヘッダーを削除してVary、 がビューワーに送信するレスポンスからこれらのヘッダー CloudFront を削除できます。

レスポンスヘッダーポリシーを使用して削除するヘッダーを指定すると、 は最初にヘッダー CloudFront を削除し、レスポンスヘッダーポリシーの他のセクション (CORS ヘッダー、セキュリティヘッダー、カスタムヘッダーなど) で指定されているヘッダーを追加します。削除するヘッダーを指定し、ポリシーの別のセクションにも同じヘッダーを追加すると、 はビューワーに送信するレスポンスに ヘッダー CloudFront を含めます。

注記

レスポンスヘッダーポリシーを使用して、オリジンから CloudFront 受信した ヘッダーServerDateヘッダーを削除し、これらのヘッダー (オリジンから受信したもの) を がビューワー CloudFront に送信するレスポンスに含めないようにすることができます。ただし、その場合、 はビューワーに送信するレスポンスに独自のバージョンのこれらのヘッダー CloudFront を追加します。が追加するServer CloudFrontヘッダーの場合、ヘッダーの値は ですCloudFront

削除できないヘッダー

以下のヘッダーは、レスポンスヘッダーポリシーを使用して削除することはできません。これらのヘッダーをレスポンスヘッダーポリシーの [Remove headers] (ヘッダーを削除) セクション (API の ResponseHeadersPolicyRemoveHeadersConfig) で指定すると、エラーが表示されます。

  • Connection

  • Content-Encoding

  • Content-Length

  • Expect

  • Host

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Transfer-Encoding

  • Upgrade

  • Via

  • Warning

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-.*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-ErrorType

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-.*

  • X-Forwarded-Proto

  • X-Real-Ip

Server-Timing ヘッダー

Server-Timing ヘッダー設定を使用して、 から送信された HTTP レスポンスの Server-Timingヘッダーを有効にします CloudFront。このヘッダーを使用して、 CloudFront とオリジンの動作とパフォーマンスに関するインサイトを得るのに役立つメトリクスを表示できます。例えば、キャッシュヒットを処理したキャッシュレイヤーを確認できます。または、キャッシュミスがある場合に、オリジンからの最初のバイトレイテンシーを確認できます。Server-Timing ヘッダーのメトリクスは、問題のトラブルシューティングや、 CloudFront またはオリジン設定の効率のテストに役立ちます。

Server-Timingヘッダーを使用する方法の詳細については CloudFront、以下のトピックを参照してください。

Server-Timing ヘッダーを有効にするには、レスポンスヘッダーポリシーを作成 (または編集) します

サンプリングレートと Pragma リクエストヘッダー

レスポンスヘッダーポリシーで Server-Timing ヘッダーを有効にするときは、サンプリングレートも指定します。サンプリングレートは、Server-Timingヘッダー CloudFront を追加するレスポンスの割合を指定する 0~100 (両端を含む) の数値です。サンプリングレートを 100 に設定すると、 は、レスポンスServer-Timingヘッダーポリシーがアタッチされているキャッシュ動作に一致するすべてのリクエストの HTTP レスポンスに ヘッダー CloudFront を追加します。50 に設定すると、 はキャッシュ動作に一致するリクエストのレスポンスの 50% に ヘッダー CloudFront を追加します。サンプリングレートは、0~100 の任意の数値 (小数点以下 4 桁まで) に設定できます。

サンプリングレートが 100 未満の数値に設定されている場合、どのレスポンスがServer-Timingヘッダー CloudFront を追加するかを制御できず、パーセンテージのみ制御できます。ただし、HTTP リクエストで値を server-timing に設定して Pragma ヘッダーを追加し、そのリクエストへのレスポンスで Server-Timing ヘッダーを受け取ることができます。これは、サンプリングレートの設定とは無関係に機能します。サンプリングレートがゼロ (0) に設定されている場合でも、リクエストに Server-Timingヘッダーが含まれている場合、 は Pragma: server-timingヘッダーをレスポンス CloudFront に追加します。

オリジンからの Server-Timing ヘッダー

キャッシュミスが発生してリクエストをオリジン CloudFront に転送すると、オリジンは へのレスポンスに Server-Timingヘッダーを含める場合があります CloudFront。この場合、 はオリジンから受信した Server-Timingヘッダーにメトリクス CloudFront を追加します。がビューワー CloudFront に送信するレスポンスには、オリジンから取得した値と が CloudFront 追加したメトリクスを含む単一のServer-Timingヘッダーが含まれています。オリジンからのヘッダー値は、最後にあるか、 がヘッダー CloudFront に追加する 2 つのメトリクスセットの間にある場合があります。

キャッシュヒットがある場合、 がビューワー CloudFront に送信するレスポンスには、Server-Timingヘッダー値に CloudFront メトリクスのみを含む単一のヘッダーが含まれます (オリジンからの値は含まれません)。

Server-Timing ヘッダーのメトリクス

Server-Timingヘッダーを HTTP レスポンス CloudFront に追加すると、 ヘッダーの値には、 CloudFront およびオリジンの動作とパフォーマンスに関するインサイトを得るのに役立つ 1 つ以上のメトリクスが含まれます。次のリストには、すべてのメトリクスと想定される値が含まれています。Server-Timing ヘッダーには、 を介したリクエストとレスポンスの性質に応じて、これらのメトリクスの一部のみが含まれます CloudFront。

これらのメトリクスのいくつかは、名前のみ (値なし) の Server-Timing ヘッダーに含まれます。その他は名前と価値です。メトリクスに値がある場合、名前と値はセミコロン (;) で区切られます。ヘッダーに複数のメトリクスが含まれている場合、メトリクスはカンマ (,) で区切られます。

cdn-cache-hit

CloudFront は、オリジンにリクエストを行わずにキャッシュからのレスポンスを提供しました。

cdn-cache-refresh

CloudFront は、キャッシュされたオブジェクトがまだ有効であることを確認するリクエストをオリジンに送信した後、キャッシュからのレスポンスを提供しました。この場合、 はオリジンから完全なオブジェクトを取得 CloudFront できませんでした。

cdn-cache-miss

CloudFront はキャッシュからのレスポンスを提供しませんでした。この場合、 CloudFront はレスポンスを返す前にオリジンから完全な オブジェクトを要求しました。

cdn-pop

リクエストを処理した CloudFront Point of Presence (POP) を表す値が含まれます。

cdn-rid

リクエストの CloudFront 一意の識別子を持つ値が含まれます。このリクエスト識別子 (RID) は、AWS Support に関する問題のトラブルシューティングに使用できます。

cdn-hit-layer

このメトリクスは、 がオリジンにリクエストを行わずにキャッシュからのレスポンス CloudFront を提供するときに存在します。次のいずれかの値が含まれます。

cdn-upstream-layer

がオリジンから完全なオブジェクトを CloudFront リクエストすると、このメトリクスが存在し、次のいずれかの値が含まれます。

  • EDGE – POP ロケーションがリクエストをオリジンに直接送信しました。

  • REC – REC ロケーションがリクエストをオリジンに直接送信しました。

  • オリジンシールドオリジンシールドとして機能している REC が、リクエストをオリジンに直接送信しました。

cdn-upstream-dns

オリジンの DNS レコードの取得にかかったミリ秒数を示す値が含まれます。値がゼロ (0) の場合は、 がキャッシュされた DNS 結果 CloudFront を使用したか、既存の接続を再利用したことを示します。

cdn-upstream-connect

オリジン DNS リクエストが完了してから、オリジンへの TCP 接続 (および該当する場合は TLS 接続) が完了するまでのミリ秒数を示す値が含まれます。値がゼロ (0) の場合は、 が既存の接続を CloudFront 再利用したことを示します。

cdn-upstream-fbl

オリジン HTTP リクエストが完了してから、オリジンからのレスポンスで最初のバイトを受信するまでのミリ秒数 (最初のバイトレイテンシー) を示す値が含まれます。

cdn-downstream-fbl

エッジロケーションがリクエストの受信を終了してから、レスポンスの最初のバイトをビューワーに送信するまでのミリ秒を示す値が含まれます。

Server-Timing ヘッダーの例

Server-Timing ヘッダー設定が有効になってい CloudFront る場合にビューワーが受信する可能性のあるServer-Timingヘッダーの例を次に示します。

例 – キャッシュミス

次の例は、リクエストされたオブジェクトが CloudFront キャッシュにない場合にビューワーが受け取る可能性のあるServer-Timingヘッダーを示しています。

Server-Timing: cdn-upstream-layer;desc="EDGE",cdn-upstream-dns;dur=0,cdn-upstream-connect;dur=114,cdn-upstream-fbl;dur=177,cdn-cache-miss,cdn-pop;desc="PHX50-C2",cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==",cdn-downstream-fbl;dur=436

この Server-Timing ヘッダーは以下を示します。

  • オリジンリクエストが、Point of Presence (POP) CloudFront ロケーション () から送信されましたcdn-upstream-layer;desc="EDGE"

  • CloudFront は、オリジン () のキャッシュされた DNS 結果を使用しましたcdn-upstream-dns;dur=0

  • がオリジン () CloudFront への TCP (および該当する場合は TLS) 接続を完了するまでに 114 ミリ秒かかりましたcdn-upstream-connect;dur=114

  • リクエスト () の完了後、 がオリジンからレスポンスの最初のバイトを受信する CloudFront までに 177 ミリ秒かかりましたcdn-upstream-fbl;dur=177

  • リクエストされたオブジェクトは CloudFrontのキャッシュ () にありませんでしたcdn-cache-miss

  • リクエストは、コード PHX50-C2 (cdn-pop;desc="PHX50-C2") によって識別されるエッジロケーションで受信されました。

  • このリクエストの CloudFront 一意の ID は yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg== () でしたcdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg=="

  • ビューワーリクエスト () を受信した後、レスポンスの最初のバイトがビューワーに送信 CloudFront されるまでに 436 ミリ秒かかりましたcdn-downstream-fbl;dur=436

例 – キャッシュヒット

次の例は、リクエストされたオブジェクトが の CloudFrontキャッシュにあるときにビューワーが受信できるServer-Timingヘッダーを示しています。

Server-Timing: cdn-cache-hit,cdn-pop;desc="SEA19-C1",cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==",cdn-hit-layer;desc="REC",cdn-downstream-fbl;dur=137

この Server-Timing ヘッダーは以下を示します。

  • リクエストされたオブジェクトはキャッシュ (cdn-cache-hit) 内にありました。

  • リクエストは、コード SEA19-C1 (cdn-pop;desc="SEA19-C1") によって識別されるエッジロケーションで受信されました。

  • このリクエストの CloudFront 一意の ID は nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g== () でしたcdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g=="

  • リクエストされたオブジェクトは、リージョン別エッジキャッシュ (REC) ロケーション (cdn-hit-layer;desc="REC") にキャッシュされました。

  • ビューワーリクエスト () を受信した後、レスポンスの最初のバイトがビューワーに送信 CloudFront されるまでに 137 ミリ秒かかりましたcdn-downstream-fbl;dur=137