Comment rediriger d'un domaine vers un autre et définir des cookies ou des en-têtes pour l'autre domaine ?
Les redirections HTTP ne permettent pas de définir des en-têtes ou des cookies personnalisés pour la cible domaine. De plus, les navigateurs empêchent de définir des cookies pour un domaine différent de celui qui répond avec l'en-tête Set-Cookie.
Solution 1 : Rediriger avec le paramètre de requête, puis définir le cookie
- Redirection depuis domaine A vers le domaine B avec un jeton d'accès transmis comme paramètre de requête.
- Le domaine B reçoit la demande et définit son propre cookie à l'aide du jeton.
Solution 2 : Cross-Origin Communication avec Window.postMessage()
- Ajouter une iframe masquée au domaine A pointant vers le domaine B.
- Envoyer le jeton d'accès au domaine B à l'aide de Window.postMessage().
- Le domaine B stocke le jeton dans localStorage ou définit un cookie à l'aide de JS.
- Message au domaine A indiquant que le jeton a été stocké et redirige l'utilisateur vers le domaine B.
Solution 3 : échange de jetons côté serveur
- Utilisez une balise dans le domaine A pour pointer vers le domaine B avec un jeton d'accès comme paramètre de requête.
- Le domaine B répond avec Définir les en-têtes Cookie lors de la réception de la demande.
- Utilisez fetch ou XMLHttpRequest (avec les informations d'identification et CORS activés) pour envoyer le jeton directement au domaine B.
- Le domaine B définit le cookie lors de la réception de l'accès. token.
Remarques importantes :
- Autoriser tous les cookies doit être activé dans les paramètres du navigateur pour que les solutions 2 et 3 fonctionnent.
- Utilisez SameSite=Aucun ; Indicateurs sécurisés dans les cookies pour la solution 3.
- La chaîne de requête dans la solution 1 expose le jeton d'accès et présente des risques de sécurité.
- La solution 3 nécessite l'activation de CORS sur le domaine cible et une spécification d'origine explicite sur le domaine cible. côté serveur.