我试图从Tomcat 5.5升级到Tomcat 7,和差不多一切正常 - 我只是有一些cookie通过Tomcat 5.5,但在Tomcat 7上消失。也就是说,Firebug确认Cookie在两种情况下都被发送,但在Tomcat 5.5中,它们显示在request.getCookies()调用中,而在Tomcat 7中则不显示。一些cookies仍然显示出来(例如JSESSIONID),但是有一些cookie丢失。Tomcat 7忽略cookie?
这是运行在同一个服务器,端口等上的同一个应用程序,我只关闭了Tomcat 5.5,启动7,并且cookies不再通过。
如果相关,那么这两个Tomcat实例都在运行在不同服务器上的Apache代理之后。不过,它似乎并不相关,因为Apache显然能够将cookie传递给Tomcat 5.5。
我的猜测是这是某种安全功能,虽然我还没有弄清楚它会是什么。缺失的cookie用于域名。domain.google.org,而通过的cookie(如JSESSIONID)用于主机subdomain.domain.org(粗体文本仅仅是一个例子,显然)。
我试着将useHttpOnly设置为false,并在上下文中将crossContext设置为true,以防与其中的某个相关,但它没有帮助。除了这两个设置之外,Tomcat 7(或Tomcat 6)中是否还有其他新功能可能会导致Cookie被遗漏?如果是这样,是否有一个方便的解决方法?
编辑:我忘了提及,它可能没有任何与cookie路径有关 - 不工作的cookie有一个路径“/”,并且工作的cookie有不同的“ /“,”/ application“和”/ application /“。
更新:我在Tomcat 6上试了一下。0,并且它有相同的cookies的麻烦,但方式不同。问题中的cookie名称包含冒号(一个像FOO:BAR,另一个更疯狂,FOO:BAR :: BLAH:BLAH),并且在这两种情况下,Tomcat 6.0都只能找到第一个冒号的文本。但它确实找到了Cookie ......所以这实际上可能与cookie名称有关,而不是主机/域名。 – EMS 2012-02-06 12:52:44