あるドメインから別のドメインにリダイレクトし、他のドメインの 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 (資格情報とともに) を使用します。
- ドメイン B は、アクセス トークンの受信時に Cookie を設定します。
重要な注意事項:
- 解決策 2 と 3 が機能するには、ブラウザ設定ですべての Cookie を有効にする必要があります。
- SameSite=None を使用します。解決策 3 の Cookie 内のセキュリティ フラグ。
- 解決策 1 のクエリ文字列はアクセス トークンを公開し、セキュリティ リスクを引き起こします。
- 解決策 3 では、ターゲット ドメインで CORS を有効にし、ターゲット ドメインで明示的な起点の指定を行う必要があります。サーバー側。
以上がリダイレクト中に別のドメインの Cookie またはヘッダーを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。