Создание файла 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 ответа:
просто установить
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');