Maison  >  Article  >  développement back-end  >  Comment définir des cookies ou des en-têtes pour un domaine différent lors d'une redirection ?

Comment définir des cookies ou des en-têtes pour un domaine différent lors d'une redirection ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 03:19:28296parcourir

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

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

  1. Redirection depuis domaine A vers le domaine B avec un jeton d'accès passé en paramètre de requête.
  2. 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()

  1. Ajoutez une iframe cachée au domaine A pointant vers le domaine B.
  2. Envoyez le jeton d'accès au domaine B à l'aide de Window.postMessage().
  3. Le domaine B stocke le jeton dans localStorage ou définit un cookie à l'aide de JS.
  4. 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

  1. Utilisez un balise dans le domaine A pour pointer vers le domaine B avec un jeton d'accès comme paramètre de requête.
  2. Le domaine B répond avec les en-têtes Set-Cookie à la réception de la demande.
  3. Utilisez fetch ou XMLHttpRequest (avec les informations d'identification et CORS activé) pour envoyer le jeton directement au domaine B.
  4. Le domaine B définit le cookie à la réception du jeton d'accès.

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=None ; 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn