Deux domaines différents (par exemple mydomain.com
y subdomain.mydomain.com
ou sub1.mydomain.com
y sub2.mydomain.com
) ne peuvent partager des cookies que si le domaine est explicitement nommé dans la section Set-Cookie
en-tête. Sinon, la portée du cookie est limitée à l'hôte de la demande. (C'est ce qu'on appelle un "cookie d'hôte seulement". Voir Qu'est-ce qu'un cookie d'hôte uniquement ? )
Par exemple, si vous avez envoyé l'en-tête suivant à partir de subdomain.mydomain.com
alors le cookie ne sera envoyé que pour les demandes adressées à ce domaine, et ne sera pas envoyé pour les demandes adressées à d'autres domaines :
Set-Cookie: name=value
Cependant, si vous utilisez ce qui suit, il sera utilisable sur les deux domaines :
Set-Cookie: name=value; domain=mydomain.com
Ce cookie sera envoyé pour tout sous-domaine de mondomaine.com, y compris les sous-domaines imbriqués tels que subsub.subdomain.mydomain.com
.
En RFC 2109 un domaine sans point initial signifie qu'il ne peut pas être utilisé sur des sous-domaines, et seul un point initial ( .mydomain.com
) permettrait de l'utiliser sur plusieurs sous-domaines (mais pas sur le domaine de premier niveau, ce que vous demandez n'était donc pas possible dans l'ancienne spécification).
Cependant, tous les navigateurs modernes respectent la nouvelle spécification. RFC 6265 et ignorera tout point de tête, ce qui signifie que vous pouvez utiliser le cookie sur des sous-domaines ainsi que sur le domaine de premier niveau.
En résumé, si vous définissez un cookie comme le deuxième exemple ci-dessus à partir de mydomain.com
il serait accessible par subdomain.mydomain.com
et vice versa. Cela peut également être utilisé pour permettre sub1.mydomain.com
y sub2.mydomain.com
pour partager les cookies.
Voir aussi :
3 votes
Oui, vous pouvez voir le lien ci-dessous codeguru.com/csharp/csharp/cs_internet/article.php/c19417/
1 votes
Étroitement lié : stackoverflow.com/questions/3089199/
2 votes
Pouvez-vous s'il vous plaît examiner cette question stackoverflow.com/questions/38351769/
1 votes
@adam0101 Que faire si le domaine et le sous-domaine sont hébergés sur un serveur différent ?
11 votes
@user3782114, cela n'a pas d'importance s'ils sont sur des serveurs différents. Dans mon cas, ils n'étaient pas seulement sur des serveurs différents, mais chaque domaine était équilibré en termes de charge sur plusieurs serveurs. Une chose qui nous a fait un peu trébucher est que les environnements inférieurs (dev, test, uat, etc) ont commencé à partager le même cookie aussi une fois que nous avons fait cela parce que nous les avions nommés comme "dev.oursite.com", "test.oursite.com", etc. L'astuce (du moins en .Net) consiste à générer une clé machine distincte pour chaque environnement et à l'enregistrer dans votre Web.config (en supposant que vous transformiez la configuration pour chaque environnement).