Sto riscontrando un problema utilizzando la classe Cookie dell'API Servlet 2.5 su Tomcat. Tiro fuori la lista dei cookie dall'oggetto HttpServletRequest e iterare su di loro in questo modo:API Java Servlet 2.5 Cookie.getDomain() restituisce sempre null
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
Tuttavia, per ogni singolo cookie nella richiesta del dominio è nullo. Perchè è questo? Il motivo per cui lo chiedo è perché ho un cookie con lo stesso nome in due domini diversi e voglio essere in grado di distinguere tra loro in base al dominio. Per aiutare a chiarire la situazione, i miei cookie identicamente denominati vengono impostati in .anydomain.net e .subdomain.anydomain.net. Entrambe vengono inviate nella richiesta ma i domini sono nulli quando arrivano al servlet. È previsto un comportamento che il servlet non possa vedere il dominio dei cookie ad esso inviati?
Modifica: ho impostato i cookie insieme al dominio, alla scadenza e al percorso in una richiesta precedente al servlet. La prossima richiesta che arriva nel browser con questi cookie mostra il dominio come null. Ho verificato che i cookie vengono impostati nei domini giusti nel browser.
Edit 2: sto usando Tomcat 6
È possibile impostare punti di interruzione sul metodo setName() e setDomain() per verificare se il contenitore del servlet analizza correttamente l'intestazione del cookie. I tuoi cookie hanno due punti (:)? Alcune versioni recenti di Tomcat non accettano la maggior parte dei cookie con due punti. – akarnokd