Cookie getMaxAge

Я не могу получить максимальное значение 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, я вижу странную дату.

Спасибо

Как вы справились с этой проблемой? Я борюсь с той же проблемой и не вижу ответов.

Ritesh M Nayak 10.03.2010 15:11

ответ @Bruno De Fraine действителен, пожалуйста, прочтите это в потоке ниже

Jeevanantham 15.03.2016 15:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
12
2
5 391
4

Ответы 4

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.

ChrisCantrell 10.07.2016 21:24

Значение может быть изменено браузером.

Вы создаете cookie и хотите установить максимальный возраст. Файл cookie отправляется в браузер. Браузер может отклонить файл cookie или игнорировать слишком долгий срок действия своей политики. Этот измененный файл cookie отправляется обратно в ваше приложение.

Проверьте настройки вашего браузера.

Просто для усмешки, можете ли вы получить значение cookie из браузера с помощью javascript?

Кроме того, можете ли вы поставить фильтр перед своим сервлетом / jsp, чтобы вы могли проверить значение файла cookie после того, как сервлет / jsp установит его?

Когда браузер отправляет файл cookie обратно на исходный сервер, он не включает возраст. Поэтому логично, что приведенный выше код "извлечения" не получает максимальный возраст: он не включается в запрос.

Когда файл cookie получен от сервера, браузер использует параметр максимального возраста, чтобы определить, как долго должен храниться файл cookie; возраст никогда не передается обратно на сервер, cookie с истекшим сроком действия просто отбрасываются. При обработке запроса, если вы хотите продлить срок действия файла cookie, повторно включите файл cookie в ответ.

Также см. Раздел «Отправка файлов cookie на исходный сервер» в RFC.

Другими словами, браузер не сообщает вам maxAge. Вы не узнаете. Извиняюсь.

Nathan Bubna 03.02.2009 01:27

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