Wie leite ich von einer Domäne zu einer anderen um und setze Cookies oder Header für die andere Domäne?
HTTP-Weiterleitungen erlauben das Setzen benutzerdefinierter Header oder Cookies für das Ziel nicht Domain. Darüber hinaus verhindern Browser das Setzen von Cookies für eine andere Domain als die, die mit dem Set-Cookie-Header antwortet.
Lösung 1: Mit Abfrageparameter umleiten und dann Cookie setzen
- Umleiten von Domäne A an Domäne B mit einem als Abfrageparameter übergebenen Zugriffstoken.
- Domäne B empfängt die Anfrage und setzt mithilfe des Tokens ihr eigenes Cookie.
Lösung 2: Cross-Origin Kommunikation mit Window.postMessage()
- Fügen Sie einen versteckten Iframe zu Domäne A hinzu, der auf Domäne B zeigt.
- Senden Sie das Zugriffstoken an Domäne B mit Window.postMessage().
- Domäne B speichert das Token in localStorage oder setzt ein Cookie mit JS.
- Nachrichten an Domäne A, dass das Token gespeichert wurde, und Weiterleitung des Benutzers an Domäne B.
Lösung 3: Serverseitiger Token-Austausch
- Verwenden Sie ein Tag in Domäne A, um auf Domäne B mit einem Zugriffstoken als Abfrageparameter zu verweisen.
- Domäne B antwortet beim Empfang der Anfrage mit Set-Cookie-Headern.
- Verwenden Sie fetch oder XMLHttpRequest (mit Anmeldeinformationen). und CORS aktiviert), um das Token direkt an Domäne B zu senden.
- Domäne B setzt das Cookie beim Empfang des Zugriffstokens.
Wichtige Hinweise:
- Alle Cookies zulassen muss in den Browsereinstellungen aktiviert sein, damit die Lösungen 2 und 3 funktionieren.
- Verwenden Sie SameSite=None; Sichere Flags in Cookies für Lösung 3.
- Die Abfragezeichenfolge in Lösung 1 legt das Zugriffstoken offen und birgt Sicherheitsrisiken.
- Lösung 3 erfordert die Aktivierung von CORS auf der Zieldomäne und eine explizite Ursprungsangabe auf der serverseitig.
Das obige ist der detaillierte Inhalt vonWie lege ich während einer Weiterleitung Cookies oder Header für eine andere Domain fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!