Cookie getMaxAge
Я не могу извлечь файл cookie cookie, он всегда возвращает -1
Создание файла cookie:
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, я вижу странную дату.
спасибо
Ответы
Ответ 1
Когда браузер отправляет файл cookie обратно на исходный сервер, он не включает возраст. Поэтому логично, что ваш код "извлечения" выше не достигает максимального возраста: он не включен в запрос.
Когда cookie получен с сервера, браузер использует параметр максимального возраста, чтобы определить, как долго сохранить файл cookie; возраст никогда не передается обратно на сервер, истекший файл cookie просто отбрасывается. При обработке запроса, если вы хотите обновить возраст файла cookie, повторно укажите cookie в ответе.
Также см. раздел "Отправка файлов cookie на сервер Origin" в RFC.
Ответ 2
API говорит, что -1 означает, что браузер работает:
Возвращает максимальный возраст файла cookie, указанный в секундах. По умолчанию -1 указывает, что cookie будет сохраняться до закрытия браузера
Каково значение константы EXPIRATION_TIME?
Ответ 3
Значение может быть изменено браузером.
Вы создаете файл cookie и хотите установить максимальный возраст. Куки отправляются в браузер. Браузер может отклонить cookie или игнорировать максимальный возраст слишком долго для своей политики. Этот модифицированный файл cookie отправляется обратно в ваше приложение.
Проверьте настройки браузера.
Ответ 4
Просто для усмешки, можете ли вы получить значение cookie из браузера с помощью javascript?
Кроме того, можете ли вы поместить фильтр перед вашим сервлетом /jsp, чтобы вы могли проверить значение файла cookie после того, как его установит сервлет/jsp?