Я хотел бы создать куки, срок действия которых не истекает. Возможно ли это вообще?
document.cookie = "name=value; expires=date; path=path;domain=domain; secure";
Я не хочу делать дату действительно большой, мне просто интересно, было ли значение параметра expires в cookie, которое говорило, что он никогда не истечет.
Спасибо.
javascript
cookies
Хосе Вега
источник
источник
Ответы:
Неа. Это невозможно. Лучший способ сделать это - просто установить срок годности как 2100.
источник
Нет синтаксиса для того, что вы хотите. Если параметр не истекает, срок действия cookie истекает в конце сеанса. Единственный вариант - выбрать произвольно большое значение. Имейте в виду, что у некоторых браузеров есть проблемы с датами после 2038 года (когда время эпохи unix превышает 32-битное int).
источник
Expires
или,Max-Age
является файлом cookie сеанса: он удаляется при завершении работы клиента. Однако веб-браузеры могут использовать восстановление сеанса , что делает большинство файлов cookie сеанса постоянными, как если бы браузер никогда не закрывался. ( источник: MDN )Вы можете сделать это в качестве примера в документации Mozilla :
document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";
PS
Конечно, возникнет проблема, если человечество все еще будет использовать ваш код в первую минуту 10000 года :)
источник
Срок действия всех файлов cookie истекает в соответствии со спецификацией файлов cookie. Максимальное значение, которое вы можете установить:
2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
Таким образом, максимальное время жизни cookie составляет
$.cookie('subscripted_24', true, { expires: 2147483647 });
источник
document.cookie = 'subscripted_24=true; expires=' + new Date(2147483647 * 1000).toUTCString();
Вы могли бы установить cookie на срок годности месяц или что-то в этом роде, а затем переназначать cookie каждый раз, когда пользователь снова посещает веб-сайт.
источник
Если вы не установите срок действия, cookie истечет в конце сеанса пользователя. Я рекомендую использовать дату прямо перед тем, как время эпохи unix продлится до 32-битного целого числа. Чтобы поместить это в файл cookie, который вы использовали бы
document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;
, предполагая, чтоrandomCookie
это файл cookie, который вы устанавливаете, иtrue
его соответствующее значение.источник
ВЫ ПРОСТО НЕ МОЖЕТЕ . Не существует точного кода для установки файла cookie навсегда, но подойдет старый трюк, например
current time + 10 years
.Просто обратите внимание, что любые даты, кроме того,
January 2038
будут обречены на то, что файлы cookie ( 32-битное int ) будут немедленно удалены. Желаю чуда, которое будет исправлено в ближайшем будущем. Для 64-битных int годы2110
будут безопасными. С течением времени, программное обеспечение и аппаратные средства будут меняться и никогда не могут приспособиться к более старым (то , что мы имеем сейчас) , чтобы подготовить в настоящее время в будущем .источник
Если вы собираетесь читать данные только со стороны клиента, вы можете использовать локальное хранилище. Он удаляется только после очистки кеша браузера.
источник
Вы можете сделать cookie никогда не заканчиваться, установив для него любую дату плюс на один больше, чем текущий год, например:
var d = new Date(); document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";
источник