le
360 mots - 2 minutes de lecture
Cookies, domaines et autres joyeusetés
Le problème
Depuis quelque temps, je bosse sur un projet perso avec Sophie, et c’est cool parce que ça nous permet d’apprendre pas mal de choses.
Et donc sur ce fameux projet, on a une prod sur www.toto.com (non ce n’est pas le vrai nom de domaine) avec quelques utilisateurs et du coup, quand on veut tester nos dev on le fait sur notre plateforme de preprod sur preprod.toto.com (et merci JLB 🤍)
Comme tout bon projet avec des utilisateurs, on utilise des 🍪 et forcément, on n’a pas super envie de mixer les cookies de prod et de preprod.
Donc forcément, on va jeter un oeil à la doc parce qu’on se dit que l’attribut Domain
doit forcément faire ce qu’on veut :
Host to which the cookie will be sent.
- If omitted, defaults to the host of the current document URL, not including subdomains.
- Contrary to earlier specifications, leading dots in domain names (.example.com) are ignored.
- Multiple host/domain values are not allowed, but if a domain is specified, then subdomains are always included.
Et c’est là que la confusion commence…
Notre compréhension du bousin:
- si on ne donne pas de valeur à l’attribut
Domain
, le cookie sera set pour toto.com, mais pas pour www.toto.com - si on set le
Domain
, le cookie sera disponible sur www.toto.com, mais aussi pour tous ses sous domaines (dont preprod.toto.com).
Oui parce qu’évidemment on a essayé de set le domaine à www.toto.com
et preprod.toto.com
mais on se prend un très aggressif :
Cookie “cookie-name” has been rejected for invalid domain.
La solution
Seulement voilà, dans la doc, on ne parle pas de domaine au sens registrar du terme, il ne s’agit pas du nom de domaine (Hello Newbie!).
Il s’agit du domaine de la page courante, soit : toute la chaine de caractère entre le protocol et le Path
du cookie.
Donc concrètement, la solution est on ne peut plus simple vu qu’il suffit de … ne rien faire !
If omitted defaults to the host of the current document URL
soit tout simplement www.toto.com ou preprod.toto.com.
Bon par contre, avec cette stratégie, va pas falloir espérer partager les cookies entre les sous domaines.