Срок действия куки не работает
У нас есть созданные файлы 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 минут, может быть, это минимум.