Tomcat에서 Servlet API 2.5의 Cookie 클래스를 사용하는 데 문제가 있습니다. 그래서처럼 위로 HttpServletRequest의 객체 쿠키의 목록을 당겨 반복 :Java Servlet API 2.5 Cookie.getDomain()은 항상 null을 반환합니다.
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
그러나, 요청의 모든 단일 쿠키 도메인이 null입니다. 왜 이런거야? 내가 두 가지 다른 도메인에 같은 이름의 쿠키가 있고 도메인을 기반으로 쿠키를 구별 할 수 있기를 원하기 때문에 내가 묻는 이유가 있습니다. 상황을 명확히하기 위해 동일한 이름의 쿠키가 .anydomain.net 및 .subdomain.anydomain.net에 설정되어 있습니다. 요청에서 둘 다 전송되지만 도메인이 서블릿에 도착하면 null입니다. 서블릿이 보내진 쿠키의 도메인을 볼 수 없다는 것이 예상되는 동작입니까?
편집 : 서블릿에 대한 이전 요청의 도메인, 만료 및 경로와 함께 쿠키를 설정합니다. 이러한 쿠키로 브라우저에 들어오는 다음 요청은 도메인을 null로 표시합니다. 쿠키가 브라우저의 올바른 도메인에 설정되는지 확인했습니다.
편집 2 : 나는 톰캣 6을 사용하고
setName() 및 setDomain() 메서드에 중단 점을 설정하여 서블릿 컨테이너가 쿠키 헤더를 올바르게 구문 분석하는지 확인할 수 있습니다. 쿠키에 콜론 (:)이 있습니까? 최근 Tomcat 버전은 콜론이있는 대부분의 쿠키를 허용하지 않습니다. – akarnokd