Cookie 以外の方法によるユーザー追跡
以前から Cookie やその他のストレージは、アプリケーションの状態をステートレス HTTP プロトコル上に確実に追加するための手段となっています。ただし、Cookie やストレージを使用すると、アプリケーションが、予期しない方法でユーザーを追跡することも可能になります。最近のブラウザーは、Web 上でのプライバシーとセキュリティの強化に取り組んでいます。数年前に作成されたアプリケーションは、最近のブラウザーでは同じ動作をしない場合があります。また、Salesforce などのアプリケーションによって iframe コンテナ内で使用されるときも同じ動作をしない場合があります。以前は、iframe でホストされるコンテンツは、ファーストパーティコンテキストでホストされているかのように、その専用のストレージにアクセスしていました。現在のブラウザーは、iframe でホストされるコンテンツをサードパーティアプリケーションとして扱います。
サードパーティアプリケーションは、キャンバスアプリケーションとして公開される場合は、Salesforce の外部で動作します。ただし、Salesforce で iframe を介して公開される場合は、コンテンツが別のドメインから提��されるため、コンテンツの読み込みが正しく行われないことがあります。これらのアプリケーションは、Salesforce で使用されるときは、ブラウザーによって追跡とユーザープライバシーの制限が課されます。次に例を示します。
- Cookie は、ページ要求および XHR で送信されません。
- セッションストレージとローカルストレージへのアクセスは拒否されます。
- alert() や confirm() などの JavaScript API は、ブロックされます。
認証での署名付き要求の使用
SPA は、キャンバスと iframe で機能します。このアプリケーションでは、ページが最初に読み込まれた後、ページレベルのナビゲーションが使用されません。代わりに、ユーザーが操作を行うにつれてページが動的に書き換えられます。つまり、アプリケーションが存続している間は、同じ JavaScript 実行コンテキストが維持されます。アプリケーション内でユーザーを承認するには、CanvasRequest オブジェクトを使用します。最初の要求の後、アプリケーションの認証トークンを Cookie やローカルストレージではなく、JavaScript に保存します。fetch() または XMLHttpRequest 標準 Web API を通じて、認証ヘッダーを使用する HTTPS 要求を承認します。
CanvasRequest オブジェクトについての詳細は、「署名付き要求認証」を参照してください。
単一ページアプリケーションでは、ストレージアクセス API を使用して Cookie やその他の追跡データへの一時的なアクセスを要求することもできます。この API は、明示的なユーザー操作を利用して、Cookie へのアクセスを許可します。アクセス権は、アプリケーションが移動するまで付与されます。この理由により、単一ページアプリケーションは、複数ページアプリケーションより好まれています。
ブラウザーの変更に関する最新情報の把握
各ブラウザーは、それぞれ動作が異なります。また、Web 上のプライバシーが発展するにつれて、ブラウザーの動作も積極的に変更されています。最新情報については、各ブラウザーのガイドラインを参照してください。