Создание файла 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 был доступен для всех поддоменов, вы должны поставить .
перед вашим доменом.
При установке пути =/ файл cookie будет доступен во всем указанном домене (иначе .example.com
).
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + '; path=/"
Это общее решение, которое берет корневой домен из объекта местоположения и устанавливает cookie. Это происходит потому, что вы не знаете, сколько поддоменов у вас есть, если есть.
Вы также можете использовать MDN JavaScript Cookie Framework и сделать:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');