Я создаю и устанавливаю cookie через фрагмент кода, который я создал ниже.Как правильно обновить файл cookie?
Когда я пытаюсь захватить document.cookie
, чтобы убедиться, что мой файл cookie был создан правильно, я вижу несоответствие.
Позвольте мне уточнить:
Я использую 50/50 генератор случайных чисел а, порожденная Math.floor(Math.random() * 2)
и хранящийся в cookieValue
. Поэтому я гарантирую, что у меня всегда есть 0 или 1 в качестве значения моего cookie. Это, как и остальные параметры, будет частью cookieStr
, который будет передан на document.cookie
, чтобы создать файл cookie.
Однако, чтобы убедиться, что это правильно произошло, мне нужно убедиться, что текущий файл cookie SomeCookieName
имеет то же значение, что и выход моего console.log(cookieStr)
. Это означает, что я правильно обновляю cookie динамически.
Один быстрый взгляд на код ниже (в консоли), и я могу сказать, что что-то не так. Он всегда имеет SomeCookieName
из 0, где, когда генератор случайных чисел будет выводить 0 и 1 соответственно.
TL; DR:
Я считаю, что я не правильно обновить значение параметра SomeCookieName
должным образом, который должен быть либо 0
или 1
на основе случайной функции cookieValue
; но я не знаю, почему это происходит. Что я делаю не так?
var hoursToAdd = 3,
daysToAdd = 10,
cookieValue = Math.floor(Math.random() * 2), // Random value 0 or 1
cookieName = "SomeCookieName",
cookiePath = "/",
cookieDomain = "*.somedomainname.com";
setCookie(cookieName, cookieValue, 0, hoursToAdd, cookiePath, cookieDomain);
console.log(document.cookie);
function setCookie(c_name, c_value, c_exdays, c_exhours, c_path, c_domain) {
var exdate = new Date(),
cookieStr = "";
// Setting up the cookie value
cookieStr = c_name + "=" + escape(c_value) + "; ";
// Determining the expiration date increase: days or hours
if (c_exdays) { // Adds days to current date
exdate.setDate(exdate.getDate() + (c_exdays));
}
else if (c_exhours) { // Adds hours to current date
exdate.setHours(exdate.getHours() + c_exhours);
}
// Setting up the cookie expiration date
cookieStr += "expires=" + exdate.toUTCString() + "; ";
// Setting up the cookie Path
if (c_path) {
cookieStr += "path=" + c_path + "; ";
}
// Setting up the cookie Domain
if (c_domain) {
cookieStr += "domain=" + c_domain + "; ";
}
console.log(cookieStr);
// Creating the cookie
document.cookie = cookieStr;
}
EDIT: добавление вывода журнала консоли.
Выход консоли, на который я смотрю, кажется неустойчивым ко мне. Это потому, что я ожидаю, что значение SomeCookieName
должно быть одинаковым каждый раз. Обратите внимание, что есть два console.log
, посмотрите на фрагмент выше и попробуйте сами посмотреть на консольный выход:
SomeCookieName = 0; expires = Пт, 29 Янв. 2016 23:14:34 GMT; Путь = /; домен = * somedomainname.com.
SomeCookieName = 0; _ga = GA1.2.988843064.1445444954; BCSI-CS-9cd60cd21b772d48 = 2
SomeCookieName = 1; expires = Fri, 29 января 2016 23:14:35 GMT; Путь = /; домен = * somedomainname.com.
SomeCookieName = 0; _ga = GA1.2.988843064.1445444954; BCSI-CS-9cd60cd21b772d48 = 2
SomeCookieName = 1; expires = Пт, 29 Янв. 2016 23:14:36 GMT; Путь = /; домен = * somedomainname.com.
SomeCookieName = 0; _ga = GA1.2.988843064.1445444954; BCSI-CS-9cd60cd21b772d48 = 2
SomeCookieName = 1; expires = Пт, 29 Янв. 2016 23:15:02 GMT; Путь = /; домен = * somedomainname.com.
SomeCookieName = 0; _ga = GA1.2.988843064.1445444954; BCSI-CS-9cd60cd21b772d48 = 2
SomeCookieName = 1; expires = Fri, 29 января 2016 23:15:03 GMT; Путь = /; домен = * somedomainname.com.
SomeCookieName = 0; _ga = GA1.2.988843064.1445444954; BCSI-CS-9cd60cd21b772d48 = 2
работает для меня: https://jsfiddle.net/2oh4665w/ – Fabricator
@Fabricator вы можете уточнить? Я смотрю на вывод консоли, и я вижу, что значения для SomeCookieName – AGE
отличаются друг от друга, поэтому он устанавливает значение 0 или 1 каждый раз. вы ожидаете, что значение cookie будет придерживаться после того, как оно будет установлено в первый раз? – Fabricator