0

Как установить куки с истечением через 1 час в JavaScript?

10

Как установить этот cookie таким образом, чтобы он истекал через час от текущего времени:

document.cookie = 'username=' + value + '; expires=' + ЧТО ЗДЕСЬ УКАЗАТЬ? + '; path=/';

Я пытаюсь установить cookie с именем "username", но не знаю, как правильно указать время его истечения. Какой формат даты или времени мне нужно использовать для установки срока действия cookie на один час с момента его создания? Буду благодарен за помощь!

2 ответ(ов)

1

Ваш код устанавливает куки с именем username, добавляя к текущему времени один час (3600 секунд). Вот как он работает:

  1. Создается новый объект Date, представляющий текущее время.
  2. С помощью метода getTime() извлекается текущее время в миллисекундах с начала эпохи (1 January 1970).
  3. Далее к этому времени добавляется 3600 секунд, умноженных на 1000, для перевода в миллисекунды, что в сумме дает новое время через один час.
  4. Метод setTime() обновляет объект now до этого нового времени.
  5. Наконец, создается куки с именем 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(), чтобы избежать проблем с неразрешенными символами в куки.

0

Вы можете записать это более компактно:

document.cookie = "name=value; expires=" + new Date(Date.now() + 1 * 3600 * 1000).toUTCString() + "; path=/";

Что касается проблемы, с которой я столкнулся (и потратил на её решение около часа), вот что я выяснил:

По какой-то странной причине команда Chrome решила игнорировать куки с локальных страниц. Если вы попытаетесь установить куки на localhost, вы не сможете их увидеть в Chrome. Так что либо загрузите свой проект на сервер, либо используйте другой браузер.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь