2012-01-16 50 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