すべてのプロダクト
Search
ドキュメントセンター

CDN:HTTPレスポンスヘッダーの設定

最終更新日:Feb 22, 2024

要求されたリソースがAlibaba Cloud CDN のポイントオブプレゼンス (POP) にキャッシュされていない場合、またはキャッシュの有効期限が切れた場合、POPは最新のリソースを取得するためにオリジンサーバーにリクエストを送信します。 配信元サーバーから返されるHTTPメッセージのヘッダーは、配信元応答ヘッダーです。 オリジンHTTPレスポンスヘッダーを変更して、キャッシュポリシーとクロスオリジンリソース共有 (CORS) を設定できます。 これにより、Webサイトのパフォーマンス、セキュリティ、ユーザーエクスペリエンスが向上し、リソースへのアクセスが効果的に管理されます。

背景情報

HTTP応答ヘッダーは、HTTPで送信される応答メッセージのヘッダーセクションのコンポーネントです。 HTTP応答ヘッダーには、クライアントに送信される特定のパラメーターが含まれます。

リクエストされたリソースがPOPにキャッシュされていない場合、リクエストはオリジンサーバーにリダイレクトされます。 次に、オリジンサーバは、要求されたリソースをPOPに返す。 オリジンサーバーからHTTPレスポンスヘッダーを書き換えることができます。 このように、クライアントは応答情報を容易に識別できる。 たとえば、ヘッダーがクライアントに返される前にContent-Typeヘッダーの値を書き換えて、クライアントがオリジンサーバーから取得したコンテンツを解析できるようにすることができます。 オリジンサーバーから返されたContent-Typeヘッダーが無効な場合、文字化けしたテキストが表示されます。 この場合、Content-Typeの値をPOPに書き換える必要があります。

image
説明
  • オリジンサーバーがPOPからリクエストを受信すると、オリジンサーバーはHTTPメッセージを返します。 書き換えルールは、オリジンサーバーから返された応答のHTTPヘッダーのみを書き換えます。 書き換えルールは、POPから直接返される応答のHTTPヘッダーを書き換えません。

  • ワイルドカードドメイン名にカスタムHTTPレスポンスヘッダーを設定することはできません。

シナリオ

  • Content-Typeの無効な値: 配信元サーバーから返されるContent-Typeの値がコンテンツの実際のタイプと一致しない場合、クライアントはコンテンツの解析に失敗する可能性があります。 たとえば、HTMLファイルがプレーンテキストとして誤ってマークされている場合は、レスポンスヘッダーを書き換えることができます。

    この例では、Content-Type: text/plainContent-Type: text/htmlに変更します。

  • キャッシュポリシー: 正確なキャッシュ制御を維持する場合は、Cache-controlまたはExpiresレスポンスヘッダーを調整できます。 これにより、キャッシュされたコンテンツの更新頻度とヒット率が最適化されます。

    この例では、Cache-Control: max-age=3600Cache-Control: max-age=86400に変更して、キャッシュの有効期間を延長します。 詳細については、「デフォルトのキャッシュルールとキャッシュルールの優先度」をご参照ください。

  • CORS: 他のドメインのwebアプリケーションがAlibaba Cloud CDNでホストされているリソースにアクセスできるようにする場合は、オリジンサーバーでaccess-Control-allow-Originおよびその他の関連するCORSヘッダーを設定します。 これらの設定により、クロスオリジンリクエストが開始されたときにAlibaba Cloud CDNがクライアントに正しいレスポンスヘッダーを提供します。 詳細については、「CORSの設定」をご参照ください。

    例:

    • Access-Control-Allow-Origin: *: すべてのドメインからのアクセスが許可されています。

    • Access-Control-Allow-Methods: GET、POST、OPTIONS: クライアントが使用できるHTTPメソッドは、GET、POST、OPTIONSです。

  • 圧縮: オリジンサーバーで圧縮がサポートされているが無効になっている場合、または使用する圧縮アルゴリズムが最適でない場合は、Accept-Encodingレスポンスヘッダーを設定して、オリジンサーバーが最適な圧縮方法を使用できるようにします。

    この例では、最初にBrotli圧縮を使用するには、Accept-Encoding: gzip, deflateAccept-Encoding: brに変更します。 詳細については、「Brotli圧縮の設定」をご参照ください。

  • リダイレクト: オリジンサーバーがリクエストを別のURLにリダイレクトする必要がある場合、この機能を使用して正しいリダイレクト応答ヘッダーを設定できます。 詳細については、「301/302リダイレクトの設定」をご参照ください。

    例: Location: https://www.example.com/new-page.html Locationヘッダーの値は、POPが配信元サーバーから返されたHTTPステータスコード301または302を受信した後に、要求されたリソースの新しいアドレスを指定します。

  • カスタムオリジンレスポンスヘッダー: オリジンサーバーが特別な要件のカスタムHTTPヘッダーを返すようにする場合は、カスタムHTTPレスポンスヘッダーを設定できます。

使用上の注意

同じヘッダーに対して複数のルールが設定されている場合、ルールは設定リストの上から下に実行されます。 例:

  • 構成1: cache-control: max-age=3600レスポンスヘッダーを追加します。

  • 設定2: cache-control: no-cacheレスポンスヘッダーを追加します。

上記の組み合わせ構成では、構成2が有効になります。

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. [ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。

  4. ドメイン名の左側のナビゲーションツリーで、Back-to-Origin 設定 をクリックします。

  5. カスタム応答ヘッダー タブをクリックします。

  6. 追加 をクリックします。

  7. [カスタムレスポンスヘッダー] ダイアログボックスでパラメーターを設定します。

    重要

    同じレスポンスヘッダに対して同時に異なる操作が行われる場合、それらの操作は異なる優先度を有する。 操作は、置換 > 追加 > 変更または削除の降順で優先されます。 たとえば、同じ応答ヘッダーに対して [追加] および [削除] 操作を同時に実行すると、応答ヘッダーが追加されてから削除されます。

    [追加] 操作のパラメーター

    HTTP响应头

    パラメーター

    説明

    実行内容

    追加

    この操作では、配信元サーバーからの応答メッセージに応答ヘッダーが追加されます。

    応答ヘッダー

    カスタム応答ヘッダー

    プリセットヘッダーを選択するか、[レスポンスヘッダー] ドロップダウンリストから [カスタムレスポンスヘッダー] を選択してレスポンスヘッダーを指定できます。

    カスタム応答ヘッダー名

    x-code

    カスタムレスポンスヘッダーの名前はx-codeです。

    応答ヘッダー値

    key1

    応答ヘッダーには複数の値を指定できます。 値はコンマ (,) で区切ります。

    key1,key2

    重複の許可

    必須

    • はい: レスポンスヘッダーを重複して追加できます。 例: x-code:key1およびx-code:key2

    • いいえ: 最新のヘッダー値は、同じヘッダー名を使用する既存のヘッダー値を上書きします。 たとえば、x-code:key1を追加してからx-code:key2を追加すると、x-code:key2のみが有効になります。

    ルール条件

    条件を使用しない

    ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。

    • 条件を使用しない

    • ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。

    削除操作のパラメーター

    删除

    パラメーター

    説明

    実行内容

    削除

    この操作により、response HeaderパラメーターとHeader Nameパラメーターの値に一致するすべてのレスポンスヘッダーが削除されます。 重複する応答ヘッダーも削除されます。

    応答ヘッダー

    カスタム応答ヘッダー

    プリセットヘッダーを選択するか、[レスポンスヘッダー] ドロップダウンリストから [カスタムレスポンスヘッダー] を選択してレスポンスヘッダーを指定できます。

    カスタム応答ヘッダー名

    x-code

    カスタムレスポンスヘッダーの名前はx-codeです。

    ルール条件

    条件を使用しない

    ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。

    • 条件を使用しない

    • ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。

    変更操作のパラメーター

    变更

    パラメーター

    説明

    実行内容

    変更点

    変更操作は、重複するレスポンスヘッダーが存在しない場合にのみ実行できます。

    応答ヘッダー

    カスタム応答ヘッダー

    プリセットヘッダーを選択するか、[レスポンスヘッダー] ドロップダウンリストから [カスタムレスポンスヘッダー] を選択してレスポンスヘッダーを指定できます。

    カスタム応答ヘッダー名

    x-code

    カスタムレスポンスヘッダーの名前はx-codeです。

    値の変更

    key1,key3

    応答ヘッダーには複数の値を指定できます。 値はコンマ (,) で区切ります。

    ルール条件

    ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。

    • 条件を使用しない

    • ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。

    Replace操作のパラメーター

    替换

    パラメーター

    説明

    実行内容

    Replace

    重複するレスポンスヘッダーが存在しない場合にのみ、置換操作を実行できます。

    応答ヘッダー

    カスタム応答ヘッダー

    プリセットヘッダーを選択するか、[レスポンスヘッダー] ドロップダウンリストから [カスタムレスポンスヘッダー] を選択してレスポンスヘッダーを指定できます。

    カスタム応答ヘッダー名

    x-code

    カスタムレスポンスヘッダーの名前はx-codeです。

    検索

    キー

    正規表現を使用して、置き換える値を検索できます。

    書き換え後

    こんにちは

    正規表現を使用して一致する値を置き換えることができます。

    一致

    すべてマッチ

    • すべてマッチ: 一致するすべての値が置き換えられます。 たとえば、正規表現を使用してx-code:key1,key2,key3のすべての "key" の文字列をabcに置き換えると、キーと値のペアはx-code:abc1,abc2,abc3に変更されます。

    • 最初のみマッチ: 最初に一致する値のみが置き換えられます。 たとえば、正規表現を使用してx-code:key1,key2,key3の最初の文字列 "key" をabcに置き換えると、キーと値のペアはx-code:abc1,key2,key3に変更されます。

    ルール条件

    ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。

    • 条件を使用しない

    • ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。

  8. OK をクリックします。

デフォルトのプリセット応答ヘッダー

デフォルトでは、Alibaba Cloud CDNは次のHTTPレスポンスヘッダーを提供します: Cache-Control、Content-Type、Expires、Last-Modified。 これらのレスポンスヘッダーは、キャッシュの制御、コンテンツタイプの定義、キャッシュの有効期限の指定、およびリソースの最終変更時刻の記録に使用されるHTTPプロトコルの重要なコンポーネントです。

Alibaba Cloud CDNのプリセットレスポンスヘッダー

説明

Cache-Control

POPおよびクライアントブラウザーでリソースをキャッシュする方法と時間を指定します。 このレスポンスヘッダーは、[有効期限] よりも優先度が高くなります。

  • Cache-Control: no-cacheは、キャッシュされたコンテンツが使用される前に、検証のためにオリジンサーバーに送信されるすべての要求を強制します。

  • Cache-Control: max-age=3600は、キャッシュされたコンテンツが3,600秒 (1時間) 以内に有効であり、POPから直接提供できることを示します。

Content-Type

クライアントに返されるリソースのデータ型について説明します。 この応答ヘッダーは、クライアントが受信したリソースを正しく解釈して表示するのに役立ち、その後のデータ処理と送信を容易にします。

  • Content-Type: text/htmlは、返されるコンテンツがHTML形式であることを示します。

  • Content-Type: image/jpegは、リソースがJPEG形式であることを示します。

Expires

キャッシュされたコンテンツが期限切れになる正確な日付または時刻を指定します。 コンテンツの有効期限が切れると、POPはすぐに配信元サーバーに更新されたリソースを要求します。 Expiresヘッダーと比較して、HTTP/1.1で導入されたCache-Controlは、よりきめ細かい制御を提供するため、ユーザーに好まれています。

期限切れ: Thu, 01 Dec 2023 16:00:00 GMTは、コンテンツが指定された時間後に期限切れになることを示します。

Last-Modified

リソースが最後に変更された時刻を指定します。 Alibaba Cloud CDNおよびブラウザーは、このレスポンスヘッダーを使用して、最後のキャッシュ以降にリソースが変更されたかどうかを判断します。

最終変更: 水曜日10月2023日07:28:00 GMTは、リソースが最後に変更された時刻を示します。

例1: ユーザーに返されるコンテンツがMIMEタイプであることを指定します。

シナリオ例

レスポンスヘッダーを追加して、ユーザーに返されるコンテンツが指定されたMIMEタイプであることを指定します。

説明

MIMEコンテンツには次のタイプがあります。

  • Text: などのテキストファイルを含みます。txtと。csvファイル、およびなどのHTMLファイル。html, . htm, . およびshtmlファイル。

  • 画像: などの一般的な画像ファイルを含みます。jpg, . png、および。gifファイル。

  • Audio: などのオーディオファイルを含みます。mp3と。wavファイル。

  • ビデオ: などのビデオファイルを含みます。mp4と。aviファイル。

  • アプリケーション: などのアプリケーションファイルを含みます。pdf、。doc、および。xlsファイル。

設定

  • 操作: 追加

  • 応答ヘッダー: Content-Type

  • ヘッダー値: text/html

配置

期待される結果: オリジンサーバーは、POPに返される応答に、値がtext/htmlであるContent-Typeヘッダーを追加します。 設定が更新されると、値は上書きされます。

例2: 応答ヘッダーの削除

シナリオ例

レスポンスからレスポンスヘッダーを削除します。

設定

  • 操作: 削除

  • 応答ヘッダー: Content-Type

配置

期待される結果: Content-Typeヘッダーは、ヘッダーがユーザーに返される前にレスポンスから削除されます。

説明

例1の追加操作と例2の削除操作を実行すると、値text/htmlを持つContent-Typeヘッダーがレスポンスに追加され、削除されます。 その結果、ユーザーに返されるコンテンツは、指定されたMIMEタイプではなく、元のタイプになります。

FAQ

応答ヘッダーを設定しても、CORSの問題が報告され、Access-Control-Allow-Origin応答ヘッダーが返されないのはなぜですか。

考えられる原因

  1. 設定が正しくない: 設定が正しくないか、有効になりません。

  2. POPキャッシュ: POPキャッシュが返されますが、追加した新しいレスポンスヘッダーがキャッシュに含まれていません。

  3. オリジンサーバー: Alibaba Cloud CDN POPで設定したCORSレスポンスヘッダーが、オリジンサーバーから返されるレスポンスヘッダーと競合する場合があります。 この場合、CDNとオリジンサーバー間のレスポンスヘッダー設定が同じであることを確認する必要があります。

  4. ブラウザキャッシュ: ブラウザによるキャッシュされた応答はすでに期限切れです。

ソリューション

  1. 設定の確認: CDN設定、特にCORSレスポンスヘッダーが正しく、有効であることを確認します。

  2. CDNキャッシュの消去: Alibaba Cloud CDNの更新機能を使用して、キャッシュされたコンテンツを消去し、リソースに再アクセスできます。 詳細については、「リソースの更新とプリフェッチ」をご参照ください。

  3. オリジンサーバーの設定を確認: オリジンサーバーから返されるレスポンスヘッダーが、Alibaba Cloud CDN POPで設定したヘッダーと競合しないことを確認します。 オリジンサーバーから返されるレスポンスヘッダーは、POPから返されるレスポンスヘッダーと同じになるように設定することをお勧めします。

  4. ブラウザーキャッシュの消去: ブラウザーキャッシュを消去するか、プライベートブラウジングモードを使用して、ブラウザーが更新されたレスポンスヘッダーを取得するようにします。

  5. テクニカルサポートに連絡: 問題が解決しない場合は、Alibaba Cloud CDNテクニカルサポートに連絡するか、チケットを起票してください。

Access-Control-Allow-originなどのオリジン応答ヘッダーが正しく追加されていることを確認するにはどうすればよいですか。

オリジンサーバーがECSインスタンスの場合

検証のために次の手順を実行します。

  1. ECSコンソールにログインし、ECSインスタンスにアクセスします。

  2. webサーバーのCORS設定を確認します。

    CORSレスポンスヘッダーの設定は、webサーバーまたはアプリケーションによって異なる場合があります。 次の例は、一般的なwebサーバーApacheおよびNGINXのCORS設定を確認する方法を示しています。

    Apache

    で。htaccessファイル、またはhttpd.confvhosts.confなどのサーバー構成ファイルは、次の設定に似たコンテンツを検索します。

    ヘッダーセットAccess-Control-Allow-Origin "*"

    特定のドメイン名のCORS設定を確認することもできます。

    ヘッダーセットアクセス制御-許可-オリジン「http://example.com」

    これらの設定が存在し、正しく設定されていることを確認します。

    Nginx

    NGINX設定ファイル (/etc/nginx/nginx.conf/etc/nginx/sites-available/defaultなど) で、アプリケーションに関連するサーバーブロックを見つけ、次の設定を確認します。

    location / {
    add_header 'Access-Control-Allow-Origin' '*';
    } 

    特定のドメイン名のCORS設定を確認することもできます。

    location / {
    add_header 'Access-Control-Allow-Origin' 'http:// example.com ';
    } 

    これらの設定が存在し、正しく設定されていることを確認します。

  3. webサーバーを再起動します。

    前の手順で設定ファイルを変更した場合は、変更を有効にするためにwebサーバーを再起動します。 たとえば、次のコマンドを使用して、ApacheまたはNGINXのサーバーを再起動できます。

    • Apache:

      sudoサービスapache2再起動
    • NGINX:

      sudoサービスnginx再起動
  4. webブラウザを使用して、新しいレスポンスヘッダーを確認します。

    webブラウザーのDevToolsの [ネットワーク] タブでリソースにアクセスし、access-Control-Allow-Originヘッダーがレスポンスに含まれているかどうかを確認します。 応答に含まれていない場合、設定は有効になりませんでしたか、キャッシュされた応答は更新されません。

オリジンサーバーがOSSバケットの場合

Alibaba Cloud Object Storage Service (OSS) はCORSをサポートしています。 OSSコンソールでAccess-Control-Allow-Originなどのレスポンスヘッダーが正しく設定されているかどうかを確認するには、次の手順を実行します。

  1. OSSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーで、コンテンツセキュリティ > クロスオリジンリソース共有の設定 を選択します。

  4. CORSルールリストで、Access-Control-Allow-Originヘッダーが含まれているかどうか、および設定が正しいかどうかを確認します。

    • OSSバケットにすべてのソースからのアクセスを許可する場合は、access-Control-allow-Origin* に設定します。

    • OSSバケットで特定のソースからのアクセスのみを許可する場合は、https://yourdomain.comなどの特定のソースのアドレスにaccess-Control-allow-Originを設定します。

  5. 他のCORSヘッダーをチェックします。

    Access-Control-Allow-Originに加えて、次のCORSヘッダーが正しく設定されているかどうかを確認する必要があります。

    • Access-Control-Allow-Methods: GETPOSTPUTDELETEなど、許可されるHTTPメソッドを指定します。

    • Access-Control-Allow-Headers: リクエストに非標準ヘッダーフィールドが含まれている場合に許可されるカスタムリクエストヘッダーを指定します。

    • Access-Control-Max-Age: プリフライト要求 (OPTIONS) の結果をキャッシュできる期間を指定します。

  6. 設定を保存します。

    設定が正しくない、または更新する必要がある場合は、画面の指示に従って設定を変更し、変更を保存します。 次に、変更が有効になるまでしばらく待ちます。

詳細については、「CORS」をご参照ください。

トラブルシューティング中に問題が解決しない場合、または新たな問題が発生した場合は、Alibaba Cloud CDNテクニカルサポートに連絡するか、チケットを起票してください。