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 上のプライバシーが発展するにつれて、ブラウザの動作も積極的に変更されています。最新情報については、各ブラウザのガイドラインを参照してください。