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?