Edge Security Acceleration (ESA) の POP (Point of Presence) からの送信レスポンスヘッダーは、HTTP レスポンスメッセージヘッダーの一部です。特定のレスポンスパラメーターを伝送し、クライアントに渡します。ESA POP の送信レスポンスヘッダーを設定して、リソースが返される際のレスポンスヘッダーを制御できます。ESA では、さまざまなビジネスニーズに合わせて、送信レスポンスヘッダールールを追加、変更、削除できます。
概要
クライアントがリソースをリクエストすると、リクエストはまず ESA に到達します。リソースが ESA POP キャッシュに見つからない場合、ESA はオリジンサーバーにオリジンリクエストを送信してデータを取得します。オリジンサーバーがデータを返した後、ESA POP は設定されたレスポンスヘッダールールに基づいて元のレスポンスを変更します。たとえば、特定のフィールドを追加、置換、または削除できます。最後に、ESA は変更されたレスポンスヘッダーを含む完全なリソースをクライアントに返します。これにより、クロスドメインのアクセス制御、キャッシュポリシーの最適化、その他のビジネス要件を実装できます。
利用シーン
クライアントに ESA 応答ファイルのリソースタイプを通知する:たとえば、
Content-Type: text/htmlレスポンスヘッダーを追加できます。これにより、クライアントは ESA 応答ファイルが HTML 形式であることを認識し、正しくレンダリングできます。オリジン間リソースアクセスを有効にする:ユーザーが ESA 上のドメイン名からリソースをリクエストする場合、ESA からの応答メッセージに
Access-Control-Allow-Originレスポンスヘッダーを設定できます。これにより、オリジン間のアクセスが可能になります。詳細については、「オリジン間リソース共有の設定」をご参照ください。レスポンスの動作をカスタマイズする:カスタムヘッダーを追加または変更して、クライアントが受信するレスポンスのコンテンツと形式を調整できます。これにより、特定の機能を実装したり、追跡目的で使用したりできます。
注意事項
複数のルールを追加した場合、ルールリストの上から順に実行されます。同じレスポンスヘッダー名を持つ後続のルールによって、前のルールは上書きされます。これにより、予期しない結果が生じる可能性があります。
例 1
応答メッセージにレスポンスヘッダー
test:123が含まれています。レスポンスヘッダー
test:321を設定するルールが追加されます。
応答メッセージがルールにヒットした場合、元のレスポンスヘッダー test:123 は test:321 に上書きされます。
例 2
応答メッセージにレスポンスヘッダー
test:123が含まれています。レスポンスヘッダー
test:321を設定するルールが追加されます。その後、testレスポンスヘッダーを削除する別のルールが設定されます。
応答メッセージがルールにヒットした場合、元のレスポンスヘッダー test:123 は削除されます。
操作手順
ルールを追加すると、ユーザーがリソースをリクエストした際に、ESA はルールの実行優先度に基づいてルールを順次照合し、実行します。
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
Modify Response Header タブを選択し、[ESA からクライアント] セクションをクリックしてから、ルールを追加 をクリックします。

ルールを追加 をクリックします。リクエストが以下のルールと一致する場合... セクションで、一致させるユーザーリクエストの特徴を設定します。ルールの設定方法の詳細については、「ルール式の構成要素」をご参照ください。
Modify Response Header セクションで、操作 を選択し、レスポンスヘッダー名 と レスポンスヘッダー値 を入力し、OK をクリックします。
操作
タイプ
説明
例
[追加]
静的
指定されたレスポンスヘッダーをクライアントに送信されるレスポンスに追加します。
レスポンスヘッダーに同じ名前のヘッダーがすでに含まれている場合、新しいヘッダーが既存のヘッダーを上書きします。
名前が
x-code、値がkey1のレスポンスヘッダーを追加するには、次のように指定します:レスポンスヘッダー名:
x-codeレスポンスヘッダー値:
key1
動的
レスポンスヘッダーの値は式に設定できます。
クライアント IP アドレスの国またはリージョンを記録するために、名前が
Client-Ip-Geo-Location、値がip.geoip.countryのレスポンスヘッダーを追加するには、次のように指定します:レスポンスヘッダー名:
Client-Ip-Geo-Locationレスポンスヘッダー値:
ip.geoip.country
変更
静的
クライアントに送信されるレスポンス内の指定されたレスポンスヘッダーの値を変更します。
名前が
x-codeのレスポンスヘッダーの値をkey2に変更するには、次のように指定します:レスポンスヘッダー名:
x-codeレスポンスヘッダー値:
key2
動的
レスポンスヘッダーの値は式に設定できます。
名前が
Client-Ip-Geo-Locationのレスポンスヘッダーの値をip.geoip.countryに変更し、ヘッダーの値をクライアント IP アドレスの国またはリージョンに変更するには、次のように指定します:レスポンスヘッダー名:
Client-Ip-Geo-Locationレスポンスヘッダー値:
ip.geoip.country
削除
重複するレスポンスヘッダーパラメーターの有無にかかわらず、レスポンスヘッダー名 に一致するすべてのパラメーター値を、クライアントに送信されるレスポンスから削除します。
名前が
x-codeのレスポンスヘッダーを削除するには、レスポンスヘッダー名 にx-codeを指定します。説明ali-innerまたはali-swiftで始まる レスポンスヘッダー名 を設定しないでください。レスポンスヘッダー値 フィールドに複数の値を設定できます。カンマ (
,) で区切ります。削除操作は、静的スキーマと動的スキーマの両方で同じように機能します。
変更操作は、既存のレスポンスヘッダーを変更します。この操作は、元のレスポンスに指定された名前のレスポンスヘッダーが存在する場合にのみ有効になります。
設定例
OSS をオリジンサーバーとして使用し、OSS と ESA の両方のコンソールで CORS を設定した場合、ESA の設定が OSS の CORS 設定を上書きします。
すべてのリクエストへの適用
利用シーン
この利用シーンでは、example.com などの現在のサイトからのすべてのリクエストが、他のすべてのオリジンからのリソースにアクセスできるようになります。
手順
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。変換ルール ページで、レスポンスヘッダーの変更 タブをクリックします。レスポンスヘッダーの位置を [ESA からクライアント] に設定し、ルールを追加 ボタンをクリックします。

レスポンスヘッダー変更ルールの追加 ページで、パラメーターを次のように設定します:
ルール名:
rule-cors-for-allなどのカスタムルール名を入力します。リクエストが以下のルールと一致する場合...:クライアントリクエストをフィルターするルール条件を設定します。この例では、すべてのリクエスト を選択します。
以下を実行する...:レスポンスヘッダーを変更する操作を設定します。この例では、次のパラメーターを設定します:
タイプ: 静的 を選択します。
操作:追加 を選択します。
レスポンスヘッダー名:
Access-Control-Allow-Originを入力します。レスポンスヘッダー値:
*を入力します。

結果
オリジン間リクエストに対して、ESA はレスポンスに Access-Control-Allow-Origin: * ヘッダーを追加します。ブラウザはレスポンスを処理し、オリジン間リソースを表示できます。

特定のリクエストへの適用
利用シーン
この利用シーンは、クライアントリクエストの origin ヘッダーの値が example.com のサブドメインである場合に適用されます。HTTP と HTTPS の両方のプロトコルをサポートします。たとえば、次のオリジンに対してオリジン間アクセスが許可されます:
origin:http://www.example.comorigin:https://www.example.comorigin:http://image.example.comorigin:https://image.example.com
レスポンスに CORS ヘッダーを追加します。CORS レスポンスヘッダーの値は、リクエストの origin ヘッダーの値と同じでなければなりません。
設定手順
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。変換ルール ページで、レスポンスヘッダーの変更 タブをクリックします。レスポンスヘッダーの位置を [ESA からクライアント] に設定し、ルールを追加 ボタンをクリックします。

レスポンスヘッダー変更ルールの追加 ページで、パラメーターを次のように設定します:
ルール名:
rule-cors-originなどのカスタムルール名を入力します。リクエストが以下のルールと一致する場合...:クライアントリクエストをフィルターするルール条件を設定します。これにより、特定の基準を満たすリクエストに対してのみ操作が実行されるようになります。この例では、条件を
ヘッダー [オリジンの値] 正規表現と一致する: ^https?://(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+example\.com$に設定します。式を直接編集することもできます:
(http.request.headers["origin"] matches "^https?://(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+example\.com$")説明ご利用のプランが正規表現による照合をサポートしていない場合は、
いずれかに等しいオペレーターを使用し、許可するオリジンヘッダーの値をリストアップします。式を直接編集することもできます:
(http.request.headers["origin"] in {"http://www.example.com" "https://www.example.com" "http://image.example.com" "https://image.example.com"})
以下を実行する...:レスポンスヘッダーを変更する操作を設定します。この例では、次のパラメーターを設定します:
タイプ: 動的 を選択します。
操作:追加 を選択します。
レスポンスヘッダー名:
Access-Control-Allow-Originを入力します。レスポンスヘッダー値:
http.request.headers["origin"]を入力します。

結果
オリジン間リクエストが行われた際、リクエストの origin ヘッダーがルールに一致する場合、ESA はレスポンスに Access-Control-Allow-Origin ヘッダーを追加します。このヘッダーの値は、クライアントリクエストの Origin ヘッダーの値と同じです。ブラウザはレスポンスを処理し、オリジン間リソースを表示できます。

レスポンスヘッダーパラメーターの説明
レスポンスヘッダーパラメーター | 説明 | 例 |
カスタム | カスタムレスポンスヘッダーを追加できます。カスタムレスポンスヘッダー名は、次の要件を満たす必要があります:
| Test-Header |
Cache-Control | クライアントプログラムのリクエストとレスポンスが従うべきキャッシュ機構を指定します。 | no-cache |
Content-Disposition | クライアントプログラムがリクエストされたコンテンツをファイルとして保存する際のデフォルトのファイル名を指定します。 | examplefile.txt |
Content-Type | クライアントプログラムに対してレスポンスオブジェクトのコンテンツタイプを指定します。 | text/plain |
Pragma | Pragma は HTTP/1.0 で定義された一般ヘッダーです。このヘッダーは通常、サーバーのレスポンスで使用され、ファイルのクライアントのキャッシュ動作を定義します。 | no-cache |
Access-Control-Allow-Origin | どのオリジンがリソースにアクセスできるかを指定します。これは、オリジン間リソース共有 (
|
|
Access-Control-Allow-Methods | クロスオリジンリクエストで許可されるメソッドを指定します。複数のメソッドはカンマ ( | POST,GET |
Access-Control-Allow-Headers | クロスオリジンリクエストで許可されるフィールドを指定します。 | X-Custom-Header |
Access-Control-Expose-Headers | アクセス可能なカスタムヘッダーを指定します。 | Content-Length |
Access-Control-Allow-Credentials | このレスポンスヘッダーは、リクエストへのレスポンスをページに公開できるかどうかを示します。
| true |
Access-Control-Max-Age | クライアントプログラムに対して、特定のリソースのプリフライトリクエスト結果のキャッシュ期間を秒単位で指定します。 | 600 |
参考
ルール関連の機能は、実行優先度、ルールの動作、設定範囲が異なります。詳細については、「ESA ルールの有効化の仕組み」をご参照ください。