Show Menu
TOPICS×

Experience Cloud Identity Service での CORS のサポート

ブラウザーは、クロスオリジンリソース共有(CORS)を使用して、現在のドメイン以外のドメインのリソースをリクエストします。Experience Cloud Identity Service は、これらのクライアント側のクロスオリジンリソースリクエストを可能にする CORS 標準規格をサポートしています。古いブラウザーや CORS をサポートしていないブラウザー上では、JSONP リクエストに切り替わります。

同一オリジンポリシーと ID サービスリクエストの問題

同一オリジンポリシーは、Web ブラウザーによって実行されるセキュリティコントロールまたは制限です。このレベルで実行される場合、あるページから別のページに対しておこなわれたリソースのリクエストが許可されるかブロックされるかは、Web ブラウザー自体が判定します。リクエストが同一オリジンのリクエストかどうかを判定するために、ブラウザーは以下を比較します。
  • Uniform Resource Identifier(URI)
  • ホスト名(例:http://www.my-webpage-example.com)
  • ポート番号(例:HTTP および HTTPS のリクエストの場合、ポート 80 および 440)
ブラウザーは、両方のページがこれらの特徴を共有している場合にリクエストの続行を許可し、そうでない場合はリソースリクエストをブロックします。

同一オリジンポリシーの問題を解決する CORS

CORS は、異なるドメイン間でリソースをリクエストするための安全で効果的な方法を提供します。CORS 仕様には、リソースリクエストを送信、受信および評価するためにブラウザーが使用する HTTP ヘッダーのセットが含まれます。リソースリクエストの評価は、
preflight check
と呼ばれます。このチェックにより、ブラウザーとサーバーは、どのリクエストを許可またはブロックするかを判定します。プリフライトチェックは、リソースをリクエストするアプリ、API、スクリプトに対して透過的です。リソースリクエストで重要なのは、以下の 2 つのヘッダーです。
  • Origin
    :リクエストのソースを識別するリクエストヘッダー。
  • Access-Control-Allow-Origin
    :リクエストがリクエスト元と共有できるかどうかを示す応答ヘッダー。
これらのヘッダーがどのように動作するかを説明します。この例では、サイト www.finance-website.com に Experience Cloud ID サービスを実装した金融サービス会社があるとします。以下の表に、CORS リクエストおよび応答ヘッダーがリソースへのアクセスをチェックする方法を定義します。
アクション
説明
リクエスト
金融会社のページが読み込まれると、ブラウザーは
dpm.demdex.net
に対してリクエストをおこないます。これは、ID サービスが使用するデータ収集サーバー(DCS)のドメインに対する呼び出しです。このクロスドメインリクエストには、以下のヘッダーが含まれます。
  • Origin: https://www.finance-website.com
応答
DCS ドメインからの応答には、金融会社のサイトに必要なリソースへのアクセスを許可する以下のヘッダーが含まれます。
  • Access-Control-Allow-Origin: https://www.finance-website.com
  • Access-Control-Allow-Credentials: true
useCORSOnly も参照してください。

CORS を使用することのその他のメリット

以下の表に、ID サービスを使用する顧客が得られる CORS の利点の一部を説明します。
メリット
説明
強化されたセキュリティ
CORS は、 XMLHttpRequest を使用して、データをリクエストおよび転送します。この方法は、JSONP リクエストよりも安全です。DCS からの応答に含まれている可能性のある、任意の JavaScript を実行する方法がないことを保証します。CORS XMLHttpRequest 応答ペイロードは、ID サービス JavaScript によって解析され、単純にコールバック関数で実行されることはありません。
注意:Cookie を受け入れるために、
XMLHttpRequest
オブジェクトの
withCredentials
プロパティを
true
に設定する必要があります。このプロパティは、Chrome、Firefox、Internet Explorer(v10 以降)、Opera および Safari でサポートされます。
パフォーマンスの向上
以下の理由により、CORS はパフォーマンスの向上に役立ちます。
  • ブラウザーは、リソースリクエストを管理します。リクエストの処理は、ID サービスに対して透過的です。
  • 非同期 JSONP リクエストとは異なり、ブラウザーは、CORS リクエストについて優先順位を下げたりキューに追加したりしません。
  • ID サービスは、許容的に応答します。これは、URL が
    Origin
    として渡された場合に、ID サービスは必要なリソースに対するアクセスをページに付与することを意味します。