Я не могу получить максимальное значение cookie, он всегда возвращает -1
Создание куки:
Cookie securityCookie = new Cookie("sec", "somevalue");
securityCookie.setMaxAge(EXPIRATION_TIME);
Получить cookie:
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for(int i=0; i<cookies.length; i++) {
Cookie cookie = cookies[i];
if ("sec".equals(cookie.getName())){
int age = cookie.getMaxAge();
}
}
}
я всегда получаю возраст = -1
также, когда я проверяю срок действия cookie Firefox, я вижу странную дату.
Спасибо
ответ @Bruno De Fraine действителен, пожалуйста, прочтите это в потоке ниже




API говорит, что -1 означает, пока браузер не работает:
Returns the maximum age of the cookie, specified in seconds, By default, -1 indicating the cookie will persist until browser shutdown
Какое значение имеет константа EXPIRATION_TIME?
Параметр возраста cookie используется только при создании файла cookie для отправки в объекте ответа. API ссылается на создание файла cookie. Тот же объект «Cookie» также используется для инкапсуляции данных, поступающих в запрос, но запрос не отправляет никаких параметров «возраста». Жаль, что для SET и GET нет разных объектов (для параллельного использования разных HTTP-заголовков Cookie: и Set-Cookie.
Значение может быть изменено браузером.
Вы создаете cookie и хотите установить максимальный возраст. Файл cookie отправляется в браузер. Браузер может отклонить файл cookie или игнорировать слишком долгий срок действия своей политики. Этот измененный файл cookie отправляется обратно в ваше приложение.
Проверьте настройки вашего браузера.
Просто для усмешки, можете ли вы получить значение cookie из браузера с помощью javascript?
Кроме того, можете ли вы поставить фильтр перед своим сервлетом / jsp, чтобы вы могли проверить значение файла cookie после того, как сервлет / jsp установит его?
Когда браузер отправляет файл cookie обратно на исходный сервер, он не включает возраст. Поэтому логично, что приведенный выше код "извлечения" не получает максимальный возраст: он не включается в запрос.
Когда файл cookie получен от сервера, браузер использует параметр максимального возраста, чтобы определить, как долго должен храниться файл cookie; возраст никогда не передается обратно на сервер, cookie с истекшим сроком действия просто отбрасываются. При обработке запроса, если вы хотите продлить срок действия файла cookie, повторно включите файл cookie в ответ.
Также см. Раздел «Отправка файлов cookie на исходный сервер» в RFC.
Другими словами, браузер не сообщает вам maxAge. Вы не узнаете. Извиняюсь.
Как вы справились с этой проблемой? Я борюсь с той же проблемой и не вижу ответов.