Создание файла cookie JavaScript в домене и чтение его через поддомены


Ниже приведен файл cookie JavaScript, который записывается на компьютер пользователя в течение 12 месяцев.

после того, как мы установили куки на нашем основном домене, такие как example.com, если пользователь посещает поддомен, как test.example.com, нам нужно продолжать идентифицировать активность пользователя в нашем" тестовом " поддомене.

но с текущим кодом, как только они покинут www.example.com и домом test.example.com, они больше не помечены как "HelloWorld".

кто-нибудь сможет помочь с мой код, чтобы разрешить чтение файлов cookie через поддомены?

<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>
4 83

4 ответа:

просто установить domain и path атрибуты на вашем cookie, например:

<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>

вы хотите:

document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;

на RFC 2109, чтобы файл cookie был доступен для всех поддоменов, вы должны поставить . перед вашим доменом.

установка пути= / будет иметь куки доступны в пределах всего указанного домена(ака .example.com).

document.cookie = "testCookie=cookieval; domain=." + 
location.hostname.split('.').reverse()[1] + "." + 
location.hostname.split('.').reverse()[0] + '; path=/"

Это универсальное решение, которое берет корневой домен из объекта location и устанавливает cookie. Реверсивный потому что вы не знаете, сколько поддоменов у вас есть, если таковые имеются.

вы также можете использовать MDN JavaScript Cookie Framework и у:

docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');