有一個很奇怪的問題與Ubuntu下16.x.安裝Tomcat的我們8.0.32Tomcat 8.0.32的奇怪行爲:有時會忽略cookie。它可以以某種方式調試?
這個問題開始發生的意外和一直存在,直到Tomcat服務器重新啓動(所以它是可重複它開始後發生)。
會發生什麼情況,是某些請求通過從適當cookie: JSESSIONID=
值JS應用計時器發送不當處理:Tomcat的找不到Session
對象爲它(從Spring MVC
層這意味着,該用戶沒有被認證)。與所有請求相同的 JSESSIONID被這個破碎的請求之前發送,並且所有請求後被髮(再次與會話ID值相同) - 他們都做工精細!
我們也確實看到,在該請求所有的標題是正確的(他們是我們在一些過濾應用程序打印出來),但Session
對象未恢復。
所以基本上,它聽起來就像在某些情況下Tomcat的開始從通過重定向從另一臺服務器發送的請求忽略JSESSIONID。而且,這並非總是如此,只是在網絡應用程序生活一段時間之後。
我不會在這裏提供或配置設置的任何代碼。首先,因爲它看起來像可憐的Tomcat問題,其次,因爲配置是標準的(在apt-install之後開箱即用)。
我的問題是:我們如何配置Tomcat以記錄所有與JSESSIONID處理相關的操作?像那樣,它爲給定的ID找到會話,或者不會,等等。
UPD:這種情況在更新版本的Tomcat 8.5.5中不會發生。但由於某些原因,無法在該特定服務器上進行更新。我目前的目標是收集有關這種行爲的證據,以確保它是一個錯誤,或者一些奇怪的默認配置,即tomcat安裝。
我不太熟悉Tomcat HTTP請求的記錄。通常,我的Java服務器位於逆向代理(如nginx)後面。首先看看Tomcat可以做什麼,如果它不夠,請考慮將nginx(或另一個反向代理)放在兩者之間來提供日誌記錄。 – toongeorges
或者,你的意思是說,nginx代理,保持becat的Tomcat,可以以某種方式處理會話? – Andremoniy
你會把Tomcat放在nginx後面,而不是相反。 Tomcat必須處理它自己的會話。儘管把nginx放在中間,你可以用它來增強日誌記錄。儘管如此,我並不是這方面的專家。 – toongeorges