363 votes

Cookies interdomaines

J'ai deux webapps WebApp1 et WebApp2 dans deux domaines différents.

  1. Je suis la définition d'un cookie dans WebApp1 dans le HttpResponse.
  2. Comment lire le même cookie de HttpRequest dans WebApp2?

Je sais que cela semble bizarre, parce que les cookies sont spécifiques à un domaine donné, et nous ne pouvons pas accéder à partir de différents domaines; j'ai cependant entendu parler de la CROIX-DOMAINE de cookies qui peuvent être partagés entre plusieurs webapps. Comment mettre en œuvre cette exigence à l'aide de la CROIX-DOMAINE des cookies?

Veuillez poster vos suggestions sur ce...

Note: je suis en train d'essayer cela avec J2EE webapps

185voto

Ludovic Points 1

Oui, il est absolument possible d'obtenir le cookie de domain1.com par domain2.com, j'ai été exactement dans le même problème pour le plugin social de mon réseau social, et après une journée de recherche j'ai trouvé la solution. Pour obtenir un exemple complet et mon aide vous pouvez m'ajouter sur

http://www.newvibe.ca/ludovic.ledoux

D'abord sur le côté serveur, vous devez avoir ces en-têtes:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type, *");

remplacer * sur Access-Control-Allow-Origin par l'origine de domaine, vous pouvez faire une requête ajax pour mettre la valeur de l'hôte à passer par le navigateur.

Avec le fichier php, vous pouvez utiliser $_COOKIE[nom];

Sur le côté client:

avec votre requête ajax, vous devez inclure 2 paramètres

crossDomain: true
xhrFields: { withCredentials: true }

Exemple:

type: "get",
url: link,
crossDomain: true,
dataType: 'json',
xhrFields: {
  withCredentials: true
}

155voto

alcuadrado Points 2305

Comme disent les autres, vous ne pouvez pas partager des cookies, mais vous pouvez faire quelque chose comme ceci:

  1. centrilize tous les cokies dans un seul domaine, disons cookiemaker.com
  2. lorsque l'utilisateur fait une demande de example.com vous rediriger lui cookimaker.com
  3. cookiemaker.com le redirige retour à example.com avec les informations dont vous avez besoin

Bien sûr, ce n'est pas completelly sécurisé, et vous devez créer une sorte de protocole interne entre vos apps de le faire.

Enfin, il serait très gênant pour l'utilisateur si vous faites quelque chose comme ça dans chaque requête, mais pas si c'est juste le premier.

Mais je pense qu'il n'y a pas d'autre moyen...

84voto

Vitae Aliquam Points 121

Autant que je sache, les cookies sont limitées par la "même origine" de la politique. Cependant, avec de la SCRO, vous pouvez recevoir et utiliser le Serveur "B" des témoins afin d'établir une session permanente de "Serveur" sur le Serveur "B".

Bien que, cela nécessite quelques en-têtes sur le Serveur "B":

Access-Control-Allow-Origin: http://server-a.domain.com
Access-Control-Allow-Credentials: true

Et vous aurez besoin d'envoyer l'indicateur "withCredentials" sur tout le Serveur "Un".

Vous pouvez lire à ce sujet ici:

http://www.html5rocks.com/en/tutorials/cors/

https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

63voto

Darin Dimitrov Points 528142

Les cookies entre domaines n'existent pas. Vous pouvez partager un cookie entre foo.example.com et bar.example.com mais jamais entre example.com et example2.com et cela pour des raisons de sécurité.

21voto

Daniel Egeberg Points 6232

Vous ne pouvez pas partager de cookies entre domaines. Vous pouvez toutefois autoriser l'accès à tous les sous-domaines. Pour autoriser l'accès à tous les sous-domaines de example.com , définissez le domaine sur .example.com .

Il est impossible don otherexample.com accès à example.com les cookies de bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X