Experience Cloud ID サービスでの CORS のサポート cors-support-in-the-experience-cloud-id-service
ブラウザーは、クロスオリジンリソース共有(CORS)を使用して、現在のドメイン以外のドメインのリソースをリクエストします。Experience Cloud ID サービスは、これらのクライアント側のクロスオリジンリソースリクエストを可能にする CORS 標準規格をサポートしています。古いブラウザーや CORS をサポートしていないブラウザー上では、JSONP リクエストに切り替わります。
同一生成元ポリシーと ID サービスリクエストの問題 section-6608cf46d27143eeaeabacaa6aa14e8e
同一生成元ポリシー(同一オリジンポリシー)は、web ブラウザーによって適用されるセキュリティ制御または制限です。 このレベルで適用されると、あるページから別のページへのリソースのリクエストを許可するかブロックするかを web ブラウザー自体が決定します。 リクエストが同一生成元(オリジン)のリクエストであるかどうかを判断するために、ブラウザーは以下を比較します。
- ユニフォームリソース識別子(URI)
- ホスト名(例:http://www.my-webpage-example.com)
- ポート番号(例:HTTP および HTTPS リクエストの場合はポート 80 および 440)
ブラウザーは、両方のページがこれらの特性を共有している場合はリクエストを成功させ、共有していない場合はリソースリクエストをブロックします。
CORS で同一生成元ポリシーの問題を解決 section-76c87ec3295d447bab220c84f138c235
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)のドメインへの呼び出しです。 このクロスドメインリクエストには、次のヘッダーが含まれます。
- 生成元 //www.finance-website.com
DCS ドメインからの応答には、必要なリソースへのアクセスを金融会社のサイトに提供する以下のヘッダーが含まれます。
- Access-Control-Allow-Origin: https://www.finance-website.com
- Access-Control-Allow-Credentials: true
useCORSOnly も参照してください。
CORS を使用することのその他のメリット section-6f44f30694c44f95bf9854b8a2af8449
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 サービスは必要なリソースに対するアクセスをページに付与することを意味します。