Je ne peux tout simplement pas croire que ce soit si difficile à déterminer.
Même après avoir lu les RFC, il n'est pas clair pour moi si un serveur sur subdomain.example.com peut définir un cookie qui peut être lu par example.com.
subdomain.example.com peut définir un cookie dont l'attribut Domain est .example.com. La RFC 2965 semble indiquer explicitement qu'un tel cookie ne sera pas envoyé à example.com, mais indique également que si vous définissez Domain = example.com, un point est ajouté, comme si vous aviez dit .example.com. Dans l'ensemble, cela semble dire que si example.com retourne définit un cookie avec Domain = example.com, il ne récupère pas ce cookie! Ça ne peut pas être vrai.
Quelqu'un peut-il clarifier les règles?
Réponses:
Citant le même RFC2109 que vous lisez:
Vous
subdomain.example.com
pouvez donc définir un cookie pour.example.com
. Jusqu'ici tout va bien.Avons-nous donc une correspondance de domaine?
Mais maintenant
example.com
, le domaine ne correspondrait pas.example.com
à la définition. Maiswww.example.com
(ou tout autre "nom non vide" dans le domaine) le ferait. Cette RFC est en théorie obsolète par la RFC2965 , qui dictait les choses sur le forçage d'un point de tête pour les domaines sur lesSet-Cookie2
opérations.Plus important, comme l'a noté @Tony, c'est le monde réel. Pour un aperçu de ce que font réellement les agents utilisateurs, consultez
et
Pour la perspective dans ce que les sites réels font, essayer de jouer avec l'
wget
aide--save-cookies
,--load-cookies
et--debug
de voir ce qui se passe.Vous constaterez probablement qu'en fait la plupart des sites utilisent une combinaison de
Set-Cookie
l'ancienne spécification RFC avec des valeurs "Host", implicitement sans point de tête (comme twitter.com ) ou définissent des valeurs de domaine (avec un point de tête) et redirigent à un serveur commewww.example.com
(comme google.com ).la source
y.z
et (2) l'agent utilisateur implémente la RFC 6265.Si le navigateur implémente la RFC 6265 , ce que tout navigateur moderne devrait faire à ce stade, alors un cookie défini pour
.example.com
aura le premier point ignoré (section 5.2.3), et le cookie sera ensuite envoyé au domaine nu et à tous sous-domaines.Ne comptez pas sur ce comportement si vous avez un trafic important provenant d'anciens navigateurs; ce RFC ne date que de 2011.
la source
Cela ne devrait pas être possible. Cependant, comme vous l'avez dit, comme ce n'est pas une norme largement documentée, cela dépend du logiciel que vous utilisez.
La plupart des navigateurs modernes adhèrent à un «modèle de sécurité Web» défini. Le modèle régit efficacement le comportement des navigateurs en matière de sécurité, sur des choses comme les cookies (en particulier la façon dont ils seront renvoyés à un site Web donné). Le modèle a également la règle selon laquelle «les navigateurs n'envoient pas de cookies aux noms de domaine qui ne les ont pas définis».
Cela étant dit, domain.com devrait être en mesure de définir des cookies pour js.domain.com. js.domain.com, cependant, ne peut définir des cookies que pour lui-même. Mais tout dépend du navigateur que vous utilisez.
la source