あるドメインから別のドメインにリダイレクトし、他のドメインの Cookie またはヘッダーを設定する方法
HTTP リダイレクトでは、ターゲットのカスタム ヘッダーまたは Cookie を設定できませんドメイン。さらに、ブラウザは、Set-Cookie ヘッダーで応答するドメインとは異なるドメインに Cookie を設定することを禁止します。
解決策 1: クエリ パラメーターを使用してリダイレクトし、Cookie を設定する
- Redirect fromクエリ パラメータとして渡されたアクセス トークンを使用して、ドメイン A からドメイン B に送信します。
- ドメイン B はリクエストを受信し、トークンを使用して独自の Cookie を設定します。
解決策 2: クロスオリジンWindow.postMessage() との通信
- ドメイン B を指す非表示の iframe をドメイン A に追加します。
- Window.postMessage() を使用してドメイン B にアクセス トークンを送信します。
- ドメイン B はトークンを localStorage に保存するか、JS を使用して Cookie を設定します。
- ドメイン A にトークンが保存されたことをメッセージし、ユーザーをドメイン B にリダイレクトします。
解決策 3: サーバー側のトークン交換
- ドメイン A の タグを使用して、アクセス トークンをクエリ パラメータとしてドメイン B をポイントします。
- ドメイン B は次のように応答します。リクエストの受信時に Set-Cookie ヘッダーを設定します。
- fetch または XMLHttpRequest (資格情報と CORS を有効にして) を使用して、トークンをドメイン B に直接送信します。
- ドメイン B は、アクセスの受信時に Cookie を設定します。 token.
重要な注意事項:
- 解決策 2 と 3 が機能するには、ブラウザ設定ですべての Cookie を有効にする必要があります。
- SameSite を使用 = なし;解決策 3 の Cookie 内のフラグを保護します。
- 解決策 1 のクエリ文字列はアクセス トークンを公開し、セキュリティ リスクを引き起こします。
- 解決策 3 では、ターゲット ドメインで CORS を有効にし、ターゲット ドメインで明示的な起点の指定を行う必要があります。サーバー側。