Tengo un problema al usar la clase de Cookie Servlet API 2.5 en Tomcat. Saco la lista de cookies del objeto HttpServletRequest e iterar sobre ellos, así:Java Servlet API 2.5 Cookie.getDomain() siempre devuelve nulo
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
Sin embargo, para que cada galleta única en la solicitud del dominio es nulo. ¿Por qué es esto? La razón por la que estoy preguntando es porque tengo una cookie con el mismo nombre en dos dominios diferentes y quiero poder diferenciarlos según el dominio. Para ayudar a aclarar la situación, mis cookies con el mismo nombre se establecen en .anydomain.net y .subdomain.anydomain.net. Ambos se envían en la solicitud, pero los dominios son nulos cuando llegan al servlet. ¿Es el comportamiento esperado que el servlet no puede ver el dominio de las cookies que se le envían?
Editar: Establecí las cookies junto con el dominio, la caducidad y la ruta en una solicitud anterior al servlet. La siguiente solicitud que ingresa al navegador con estas cookies muestra el dominio como nulo. He verificado que las cookies se establecen en los dominios correctos en el navegador.
Edición 2: Estoy usando Tomcat 6
Puede establecer puntos de interrupción en el método setName() y setDomain() para comprobar si el contenedor de servlet analiza correctamente el encabezado de la cookie. ¿Su cookie tiene dos puntos (:) en ella? Algunas versiones recientes de Tomcat no aceptan la mayoría de las cookies con dos puntos. – akarnokd