Как установить куки с истечением через 1 час в JavaScript?
Как установить этот cookie таким образом, чтобы он истекал через час от текущего времени:
document.cookie = 'username=' + value + '; expires=' + ЧТО ЗДЕСЬ УКАЗАТЬ? + '; path=/';
Я пытаюсь установить cookie с именем "username", но не знаю, как правильно указать время его истечения. Какой формат даты или времени мне нужно использовать для установки срока действия cookie на один час с момента его создания? Буду благодарен за помощь!
2 ответ(ов)
Ваш код устанавливает куки с именем username
, добавляя к текущему времени один час (3600 секунд). Вот как он работает:
- Создается новый объект
Date
, представляющий текущее время. - С помощью метода
getTime()
извлекается текущее время в миллисекундах с начала эпохи (1 January 1970). - Далее к этому времени добавляется 3600 секунд, умноженных на 1000, для перевода в миллисекунды, что в сумме дает новое время через один час.
- Метод
setTime()
обновляет объектnow
до этого нового времени. - Наконец, создается куки с именем
username
, которой присваивается значение переменнойvalue
, устанавливается дата истечения срока действия куки посредствомtoUTCString()
и указывается путь/
для доступности куки на всем сайте.
Убедитесь, что переменная value
инициализирована перед использованием этого кода, иначе вы получите некорректный результат. Ниже приведен улучшенный вариант с обработкой значений:
var now = new Date();
var value = 'your_username'; // Убедитесь, что значение инициализировано
var time = now.getTime();
time += 3600 * 1000; // Добавляем один час
now.setTime(time);
document.cookie =
'username=' + encodeURIComponent(value) + // Кодируем значение для безопасности
'; expires=' + now.toUTCString() +
'; path=/';
В этом коде значение value
кодируется с помощью encodeURIComponent()
, чтобы избежать проблем с неразрешенными символами в куки.
Вы можете записать это более компактно:
document.cookie = "name=value; expires=" + new Date(Date.now() + 1 * 3600 * 1000).toUTCString() + "; path=/";
Что касается проблемы, с которой я столкнулся (и потратил на её решение около часа), вот что я выяснил:
По какой-то странной причине команда Chrome решила игнорировать куки с локальных страниц. Если вы попытаетесь установить куки на localhost, вы не сможете их увидеть в Chrome. Так что либо загрузите свой проект на сервер, либо используйте другой браузер.
Где найти документацию по форматированию даты в JavaScript?
Как определить нажатие клавиши Esc?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"