ホームページ  >  記事  >  バックエンド開発  >  リダイレクト中に別のドメインの Cookie またはヘッダーを設定するにはどうすればよいですか?

リダイレクト中に別のドメインの Cookie またはヘッダーを設定するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 03:19:28296ブラウズ

How to Set Cookies or Headers for a Different Domain During a Redirect?

あるドメインから別のドメインにリダイレクトし、他のドメインの Cookie またはヘッダーを設定する方法?

HTTP リダイレクトでは、ターゲットのカスタム ヘッダーまたは Cookie を設定できませんドメイン。さらに、ブラウザは、Set-Cookie ヘッダーで応答するドメインとは異なるドメインに Cookie を設定することを防ぎます。

解決策 1: クエリ パラメーターを使用してリダイレクトし、次に Cookie を設定します

  1. Redirect fromクエリ パラメーターとして渡されたアクセス トークンを使用して、ドメイン A からドメイン B に送信します。
  2. ドメイン B はリクエストを受信し、トークンを使用して独自の Cookie を設定します。

解決策 2: クロスオリジンWindow.postMessage() との通信

  1. ドメイン B を指す非表示の iframe をドメイン A に追加します。
  2. Window.postMessage() を使用してドメイン B にアクセス トークンを送信します。
  3. ドメイン B はトークンを localStorage に保存するか、JS を使用して Cookie を設定します。
  4. ドメイン A にトークンが保存されたことをメッセージし、ユーザーをドメイン B にリダイレクトします。

解決策 3: サーバー側のトークン交換

  1. を使用するドメイン A のタグを使用して、クエリ パラメータとしてアクセス トークンを使用してドメイン B をポイントします。
  2. ドメイン B は、リクエストを受信すると Set-Cookie ヘッダーで応答します。
  3. fetch または XMLHttpRequest (資格情報とともに) を使用します。
  4. ドメイン B は、アクセス トークンの受信時に Cookie を設定します。

重要な注意事項:

  • 解決策 2 と 3 が機能するには、ブラウザ設定ですべての Cookie を有効にする必要があります。
  • SameSite=None を使用します。解決策 3 の Cookie 内のセキュリティ フラグ。
  • 解決策 1 のクエリ文字列はアクセス トークンを公開し、セキュリティ リスクを引き起こします。
  • 解決策 3 では、ターゲット ドメインで CORS を有効にし、ターゲット ドメインで明示的な起点の指定を行う必要があります。サーバー側。

以上がリダイレクト中に別のドメインの Cookie またはヘッダーを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。