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:

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.