Срок действия куки не работает

У нас есть созданные файлы cookie, и у них нет даты истечения срока действия, поэтому они используют 30-минутное время по умолчанию. Я просто хотел, чтобы они истекали через 2 минуты, как показано ниже, с установленным максимальным возрастом.

Cookie sessionCookie = new Cookie("sessioncookie", "345rfhthjii");
sessionCookie.setPath("/");
sessionCookie.setSecure(true);
sessionCookie.setMaxAge(120);
response.addCookie(sessionCookie);

Приведенный выше код не работает, поэтому я просмотрел другие посты, которые связаны с истечением срока действия этой сессии, но каждое решение сообщает о дате / времени, которые необходимо установить на страницах jsp.

Разве мы ничего не можем сделать в самом сервлете?

3 ответа

Метод setMaxAge(int) устанавливает срок действия куки в секундах, поэтому ваш код:

sessionCookie.setMaxAge(120);

Должен правильно создать cookie, срок действия которого истечет через 2 минуты.

Я хотел бы убедиться, что вы удаляете предыдущие куки, потому что ваш синтаксис правильный, и вы должны испытывать предполагаемое поведение, которое вы описали.

Я проверил ваш код в Firefox. То, как вы храните куки, правильное, а вы правы. Когда срок действия файла cookie истек, Firefox не удаляет его немедленно.

Тестовое печенье

Как вы видете test срок действия cookie истек, но в списке файлов cookie в Firefox еще нет. Но вы не можете получить доступ к этому cookie через Javascript, а также браузер не отправляет этот cookie на сервер. Вы можете проверить это с помощью этой команды в сервлете:

Cookie[] cookies = req.getCookies();

Видимо, это политика браузера для обновления списка файлов cookie.

Я знаю, что это было несколько лет назад, но я искал минимальное время, которое можно установить для Max-age, и в моих испытаниях браузер не хранит ничего меньше 5 минут, может быть, это минимум.

Другие вопросы по тегам