Wie leite ich von einer Domain zu einer anderen um und setze Cookies oder Header für die andere Domain?
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 festlegen
- Weiterleiten von Domäne A zu Domäne B mit einem Zugriffstoken, das als Abfrageparameter übergeben wird.
- 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.
- Melden Sie Domäne A, dass das Token gespeichert wurde, und leiten Sie den Benutzer zu Domäne B weiter.
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 mit Set-Cookie-Header beim Empfang der Anfrage.
- Verwenden Sie fetch oder XMLHttpRequest (mit aktivierten Anmeldeinformationen und CORS), um das Token direkt an Domäne B zu senden.
- Domäne B setzt das Cookie beim Empfang des Zugriffs Token.
Wichtige Hinweise:
- Alle Cookies zulassen muss in den Browsereinstellungen aktiviert sein, damit die Lösungen 2 und 3 funktionieren.
- Use 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.