以下问题与Chrome ...:
我在服务器上运行Grails 1.3.7应用程序。我注意到,当我从Chrome请求静态内容(例如非动态html文件)时,Chrome会创建两个JSESSIONID-Cookies。登录窗口显示时的第一个,以及成功登录后的第二个。如果我想刷新页面或请求其他资源,我将再次登录。 (我认为因为Tomcat不理解这两个cookie)
我已经尝试过使用FF,但FF只是创建一个Cookie并且它的工作完美。 此外,我已经在本地运行了应用程序,它甚至可以完美地使用chrome。所以,tomecat的东西一定是错的。
环境:
我的httpd.conf:
ProxyPass /manager http://myUrl:8080/manager
ProxyPass /myGrailsApp http://myUrl:8080/myGrailsApp
ProxyPassReverse /manager http://myUrl:8080/manager
ProxyPassReverse /myGrailsApp http://myUrl:8080/myGrailsApp
ProxyPass / http://myUrl:8080/myGrailsApp/frontend
ProxyPassReverse / http://myUrl:8080/myGrailsApp/frontend
提前致谢。
更新1:
我重新构建,重新部署应用程序并重新启动tomcat。
现在我注意到:Chrome不再生成两个Cookie。但错误是一样的。每次刷新或请求某些内容时,JSESSIONID都会更改,我必须再次登录。
tomcat-server上的一个简短监视显示了大量的活动会话 - 来自chrome ...
更新2:
我在服务器上本地尝试了(使用chrome):
似乎Apache是问题(?)。
解决方案:
我知道了:) Grails * .gsp-Templates始终在每个请求上请求'favicon.ico'。 错误出现在静态内容(如html文件)上的原因是因为我们从Grails-Application重定向到这些资源。
所以我把favicon.ico放在正确的位置,现在它可以工作:)
此错误仅涉及谷歌Chrome,在FF和IE中它没有任何问题。
答案 0 :(得分:6)
我也遇到了这个问题。我花了一段时间才弄清楚发生了什么(包括使用Wireshark嗅探),还有更多的时间来寻找可行的解决方案。 最后我找到了这个帖子https://vaadin.com/forum/-/message_boards/view_message/1216366
它认为这是Chrome / Safari(Webkit浏览器?)的问题以及它们处理重定向cookie的方式。 简单的解决方法是将context.xml添加到包含
的spring项目中的META-INF目录中<?xml version='1.0' encoding='utf-8'?>
<Context sessionCookiePathUsesTrailingSlash='false'>
</Context>
然后重新部署新的war文件。现在一切都按预期工作了。