Mam problem z wykorzystaniem klasy Cookie z Servlet API 2.5 na Tomcat. I wyciągnąć listę plików cookie z obiektu HttpServletRequest i iteracyjne nad nimi tak:Java Servlet API 2.5 Cookie.getDomain() zawsze zwraca wartość null
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
Jednak dla każdego pliku cookie w żądaniu domena jest zerowa. Dlaczego to? Pytam, ponieważ mam plik cookie o tej samej nazwie w dwóch różnych domenach i chcę móc je rozróżnić na podstawie domeny. Aby pomóc w wyjaśnieniu sytuacji, moje identycznie nazwane pliki cookie są ustawiane w domenie .domdomain.net i .subdomain.anydomain.net. Oba są wysyłane w żądaniu, ale domeny są puste, gdy docierają do serwletu. Czy jest oczekiwane zachowanie, że serwlet nie może zobaczyć domeny plików cookie wysłanych do niego?
Edytuj: Ustawiam pliki cookie wraz z domeną, datą wygaśnięcia i ścieżką w poprzednim żądaniu do serwletu. Kolejne żądanie przychodzące do przeglądarki za pomocą tych plików cookie pokazuje domenę jako wartość null. Sprawdziłem, czy pliki cookie są ustawiane we właściwych domenach w przeglądarce.
Edit 2: Używam Tomcat 6
Można ustawić punkty przerwania w metodach setName() i setDomain(), aby sprawdzić, czy kontener serwletu prawidłowo analizuje nagłówek pliku cookie. Czy twój plik cookie ma dwukropki (:) w nim? Niektóre najnowsze wersje Tomcat nie akceptują większości ciasteczek z dwukropkiem. – akarnokd