【发布时间】:2012-02-11 10:17:07
【问题描述】:
chrome 出现以下问题...:
我在服务器上运行 Grails 1.3.7 应用程序。我注意到,当我从 Chrome 请求静态内容(例如非动态 html 文件)时,Chrome 会创建两个 JSESSIONID-Cookie。登录窗口出现时的第一个,成功登录后的第二个。如果我想刷新页面,或者请求其他资源,我必须重新登录。 (我认为是因为 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
提前致谢。
更新 1:
我重新构建、重新部署了应用程序并再次重新启动了 tomcat。
现在我注意到:Chrome 不再生成两个 cookie。但错误是一样的。每次我刷新或请求某些内容时,JSESSIONID 都会更改,我必须重新登录。
在 tomcat 服务器上短暂观察会显示大量活动会话 - 来自 chrome 的...
更新 2:
我在服务器本地试了一下(用chrome):
- localhost/myApp/frontend => Apache => 失败
- localhost:8080/myApp/frontend => Tomcat => OK
似乎 Apache 是问题所在(?)。
解决方案:
我知道了:) Grails *.gsp 模板总是在 每个 请求中请求“favicon.ico”。 静态内容(如 html 文件)上出现错误的原因是我们从 Grails-Application 重定向到这些资源。
所以我把 favicon.ico 放在了正确的位置,现在它可以工作了 :)
这个错误只涉及谷歌浏览器,在 FF 和 IE 中它没有任何问题。
【问题讨论】:
-
您的问题和解决方案实际上帮助了一群跨国企业开发人员和工程师解决了一个已经发生数月的生产问题。谢谢。
标签: google-chrome grails tomcat7 jsessionid