Вопрос по java – Java Servlet API 2.5 Cookie.getDomain () всегда возвращает нуль

15

У меня возникла проблема с использованием класса Cookie Servlet API 2.5 на Tomcat. Я вытаскиваю список файлов cookie из объекта HttpServletRequest и перебираю их так:

<code>Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies) {
    System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
</code>

Однако для каждого файла cookie в запросе домен имеет значение null. Почему это? Причина, по которой я спрашиваю, состоит в том, что у меня есть cookie с одинаковым именем в двух разных доменах, и я хочу иметь возможность различать их в зависимости от домена. Чтобы прояснить ситуацию, мои файлы cookie с одинаковыми именами устанавливаются в .anydomain.net и .subdomain.anydomain.net. Оба отправляются в запросе, но домены имеют нулевое значение, когда они попадают в сервлет. Ожидается ли такое поведение, что сервлет не сможет увидеть домен отправленных ему файлов cookie?

Изменить: Я установил куки вместе с доменом, сроком действия и путь в предыдущем запросе к сервлету. Следующий запрос, поступающий в браузер с этими файлами cookie, отображает домен как нулевой. Я убедился, что файлы cookie установлены в нужных доменах в браузере.

Изменить 2: я использую Tomcat 6

Вы можете установить точки останова в методах setName () и setDomain (), чтобы проверить, правильно ли контейнер сервлета анализирует заголовок cookie. В вашем печенье есть двоеточия (:)? Некоторые недавние версии Tomcat не принимают большинство файлов cookie с двоеточием. akarnokd

Ваш Ответ

2   ответа
23

что можете получить что-либо кроме значения из файлов cookie запроса? Браузер будет отправлять только имя = значение в заголовке файла cookie HTTP.

Другие атрибуты (безопасный, домен, путь, срок действия) доступны только для файлов cookie, которые вы сами указали в ответе. Они используются для создания заголовков ответа Set-Cookie.

7

как домен, используются только для файла cookie, когда он является частью ответа (т.е. в заголовке Set-Cookie). Клиент (например, веб-браузер) должен отправлять только файлы cookie, которые имеют правильный домен (путь и т. Д.). Таким образом, запрос видит только значения, поскольку сам заголовок (Cookie) содержит только значения. Ваш клиент не должен отправлять куки с разных доменов на сервер.

Похожие вопросы