2017-09-17 3 views
0

Il existe deux domaines: domain1.com et domain2.com. Le serveur de domain1.com:set cookie origine d'origine

app.get('/',(req,res,next)=>{ 
    res.redirect('domain2.com/'); 
}) 

et le serveur de domain2.com:

app.get('/',(req,res,next)=>{ 
    res.cookie("name",'luoxia'); 
    res.end(); 
}) 

Je trouve que le cookie est réglé sur domain1.com, pourquoi? Je veux définir le cookie à domain2.com. Comment faire ça?

Répondre

1

La définition de cookies pour un autre domaine n'est pas possible. Permettre cela présenterait un énorme défaut de sécurité. Les cookies inter-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é.

Si vous souhaitez transmettre des données à un autre domaine, vous pouvez l'encoder dans l'URL. ou vous pouvez donc un hack comme ça.

Centraliser tous les cookies dans un seul domaine,

1. let's say cookiemaker.com When the user makes a request to example.com you redirect him to cookiemaker.com 
    2.cookiemaker.com redirects him back to example.com with the information you need 

Bien sûr, ce n'est pas tout à fait sûr, et vous devez créer une sorte de protocole interne entre vos applications pour le faire. Enfin, ce serait très ennuyeux pour l'utilisateur si vous faites quelque chose comme ça à chaque demande, mais pas si c'est juste le premier.

voir RFC6265:

L'agent utilisateur rejette les cookies, sauf si l'attribut de domaine spécifie un champ pour le cookie qui inclurait le serveur d'origine. Par exemple, l'agent utilisateur acceptera un cookie avec un attribut Domain de "example.com" ou de "foo.example.com" dans foo.example.com, mais l'agent utilisateur n'acceptera pas de cookie avec un Attribut de domaine de "bar.example.com" ou de "baz.foo.exemple.com".

REMARQUE: Pour des raisons de sécurité, de nombreux agents utilisateur sont configurés pour rejeter Attributs de domaine correspondant aux "suffixes publics". Par exemple, certains agents utilisateurs rejetteront les attributs de domaine "com" ou "co.uk". (Voir la section 5.3 pour plus d'informations.)

1: https://tools.ietf.org/html/rfc6265#section-4.1.2.3

+0

Merci pour la réponse, mais je pense que vous midunderstood ma question, comme vous l'avez dit, quand 'example.com' est' rediriger vers cookiemaker. com', et 'cookiemaker.com' ne peut pas mettre cookie à' example.com', mais j'ai trouvé que le cookie est défini sur 'example.com' exactement comme ma question. Je ne veux pas mettre le cookie à 'example.com' mais' cookiemaker.com' – laoqiren