Chrome和JSESSIONID

Bea*_*aft 5 grails google-chrome jsessionid tomcat7

以下问题与铬...:

我在服务器上运行Grails 1.3.7应用程序.我注意到,当我从Chrome请求静态内容(例如非动态html文件)时,Chrome会创建两个JSESSIONID-Cookies.登录窗口显示时的第一个,以及成功登录后的第二个.如果我想刷新页面或请求其他资源,我将再次登录.(我认为因为Tomcat不理解这两个cookie)

我用FF尝试过,但FF只是创建了一个Cookie,它的工作完美.此外,我已经在本地运行了应用程序,它甚至可以完美地使用chrome.所以,tomecat的东西一定是错的.

环境:

  • Grails-Application 1.3.7(使用Spring-Security-Core 1.2.4)
  • Apache Tomcat 7(在Windows Server 2008上)

我的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
Run Code Online (Sandbox Code Playgroud)

提前致谢.

更新1:

我重新构建,重新部署应用程序并重新启动tomcat.

现在我注意到:Chrome不再生成两个cookie.但错误是一样的.每次刷新或请求某些内容时,JSESSIONID都会更改,我必须再次登录.

tomcat-server上的一个短监视显示了大量的活动会话 - 来自chrome的那些...

更新2:

我在服务器上本地尝试了它(使用chrome):

  • localhost/myApp/frontend => Apache => FAIL
  • localhost:8080/myApp/frontend => Tomcat =>好的

似乎Apache是​​问题(?).

解:

我已经知道了:) Grails*.gsp-Templates总是在每个请求上请求'favicon.ico' .错误出现在静态内容(如html文件)上的原因是因为我们从Grails-Application重定向到这些资源.

所以我把favicon.ico放在正确的位置,现在它工作:)

此错误仅涉及谷歌Chrome,在FF和IE中它没有任何问题.

小智 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>
Run Code Online (Sandbox Code Playgroud)

然后重新部署新的war文件.现在一切都按预期工作了.