Vous trouverez ci-dessous un cookie JavaScript écrit sur l'ordinateur de l'utilisateur pendant 12 mois.
Après avoir défini le cookie sur notre domaine principal tel que example.com
, si l'utilisateur devait visiter un sous-domaine tel que test.example.com
, nous devons continuer à identifier l'activité de l'utilisateur sur notre sous-domaine "test".
Mais avec le code actuel, dès qu'ils quittent www.example.com
et visitent test.example.com
, ils ne sont plus marqués comme "HelloWorld".
Est-ce que n'importe qui pourrait m'aider avec mon code pour permettre au cookie d'être lu à travers les sous-domaines?
<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate;
</script>
Il suffit de définir les attributs domain
et path
sur votre cookie, comme suit:
<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate
+ ";domain=.example.com;path=/";
</script>
Tu veux:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
Conformément à la RFC 2109 , pour qu'un cookie soit disponible pour tous les sous-domaines, vous devez placer un .
devant votre domaine.
Si vous définissez le chemin = /, le cookie sera disponible dans l’ensemble du domaine spécifié (alias .example.com
).
Voici un exemple de travail:
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + "; path=/"
Il s'agit d'une solution générique qui extrait le domaine racine de l'objet location et définit le cookie. Le renversement est dû au fait que vous ne savez pas combien de sous-domaines vous avez le cas échéant.
Vous pouvez également utiliser = MDN JavaScript Cookie Framework et faire:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');