Создание cookie JavaScript в домене и чтение его в поддоменах
Ниже приведен cookie JavaScript, который написан на компьютере пользователя в течение 12 месяцев.
После того, как мы установили файл cookie в нашем основном домене, например example.com
, если пользователь посетит подобъект, например test.example.com
, нам нужно продолжить идентификацию активности пользователя через наш "тестовый" субдомен.
Но с текущим кодом, как только они покинут www.example.com
и посещают test.example.com
, они больше не помечены как "HelloWorld".
Может ли кто-нибудь помочь с моим кодом, чтобы куки файлы могли быть прочитаны через поддомены?
<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>
Ответы
Ответ 1
Просто установите атрибуты 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>
Ответ 2
Вы хотите:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
В соответствии с RFC 2109, чтобы файл cookie был доступен для всех поддоменов, вы должны поставить .
перед своим доменом.
Настройка пути =/будет иметь куки файлы в пределах всего указанного домена (aka .example.com
).
Ответ 3
Вот рабочий пример:
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + "; path=/"
Это общее решение, которое берет корневой домен из объекта местоположения и устанавливает cookie. Это происходит потому, что вы не знаете, сколько поддоменов у вас есть, если есть.
Ответ 4
Вы также можете использовать MDN JavaScript Cookie Framework и выполните следующие действия:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');