2012-01-16 83 views
5

以下问题与铬...:Chrome和JSESSIONID

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

我已经尝试过使用FF,但FF只是创建一个Cookie,并且其工作完美。 另外,我已经在本地运行该应用程序,并且它甚至可以完美地与Chrome一起工作。所以,tomecat的东西一定是错的。

环境:

  • 与Grails应用1.3.7(带有弹簧式安全核心1.2.4)
  • 的Apache Tomcat 7

我的httpd(Windows Server 2008上)。 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的服务器上的一个短的手表显示的活动会话的数量较大 - 来自铬...

更新2:

我试了一下在服务器本地(铬) :

  • 本地主机/对myApp /前端=>阿帕奇=> FAIL
  • 本地主机:8080 /对myApp /前端=>的Tomcat =>行

看起来像Apache是​​问题(?)。

解决方案:

我知道了:) Grails的* .gsp模板总是要求 '的favicon.ico' 上每个请求。 错误出现在静态内容(如html文件)上的原因是我们重定向到Grails应用程序中的这些资源。

所以我把favicon.ico的在正确的地方,而现在它的工作原理:)

此错误只涉及谷歌浏览器,在FF和IE浏览器,它的工作没有任何问题。

+0

您的问题和解决方案确实帮助一群跨国企业开发人员和工程师解决了几个月来一直在发生的生产问题。谢谢。 – rubynorails 2016-05-03 20:44:30

回答

6

我也遇到了这个问题。我花了一段时间才弄清楚发生了什么事情(包括用Wireshark嗅探),还有更多时间来找到可行的解决方案。 最后我发现这个线程https://vaadin.com/forum/-/message_boards/view_message/1216366

它接近这是Chrome/Safari(Webkit浏览器?)的问题以及它们处理重定向的cookie的方式。 简单的修复是增加一个context.xml中的META-INF目录中包含

<?xml version='1.0' encoding='utf-8'?> 
<Context sessionCookiePathUsesTrailingSlash='false'> 
</Context> 

,然后重新部署新的WAR文件我的春天项目。现在一切都按预期工作。

+0

很好的解决方案,感谢您发布! :-) – Beastcraft 2012-03-21 11:32:10

+0

但我不得不承认,在我发布后不久,我突然停止工作。像tis这样的接缝是修复的一部分,另一部分是用ProxyPass和ProxyPassReverse取代Jkmount。 因为我做了这些改变,它的工作很好 – Marqs 2012-03-28 11:09:31

+0

是的,我也认为这将是一个好的和干净的解决方案的几个步骤。我的修复程序并不像您的修复程序那样干净:P – Beastcraft 2012-03-29 16:57:15