2014-10-22 56 views
0

環境 正常保值 - OpenJDK的1.7 - tomcat的7.0.55與本地連接器 - 阿帕奇2.4.10與MOD-JK 1.2.40是當Tomcat重啓後JSESSIONID是創建

  1. 啓動tomcat
  2. 客戶端請求 - > JSESSIONID爲null
  3. Tomcat的響應 - > JSESSIONID = C5EBF0AA96ADB34E0C28E4D9D2595D98是創建
  4. 刷新頁面 - >會話屬性(名稱=計數,值=計數++)是正確的。計數正在增加。
  5. Tomcat的停止 - >開始(重新開始)範圍內設置會話不是堅持
  6. 客戶端刷新 - >客戶端請求發送JSESSIONID = C5EBF0AA96ADB34E0C28E4D9D2595D98
  7. 會話屬性(名稱=計,值= 0)復位。但保留JSESSIONID

問題。 爲什麼tomcat使用JSESSIONID設置客戶端請求值?是不是再生?

是這個java的規格?

謝謝。

+0

確定,Tomcat在第6步之後給予JSESSIONID,這是不能簡單地認爲是存儲在客戶端的cookie的JSESSIONID?嘗試在執行步驟6之前刪除所有Cookie,看看您是否仍然有這種行爲。 – 2014-10-22 08:33:00

+0

如果我清除cookie或重新運行瀏覽器,當然客戶端不會發送JSESSIONID。但是我保持瀏覽器頁面即使是tomcat重啓,瀏覽器在頁面刷新時發送JSESSIONID。 和tomcat查找服務器會話,但該sessionid不存在。 所以我覺得tomcat會生成新的sessionid,並且對客戶端做出響應,但是不會工作。 tomcat使用客戶端請求的相同sessionid值。 – 2014-10-22 09:02:17

回答

1

我不認爲它是在Java規範中,我認爲它是某種優化方式:重新使用會話ID通常會減少生成的id的數量並儘管可能發生衝突。

但是,tomcat將只對存儲在cookie中的sesionids做這件事(爲安全目的, 有關詳細信息,請參閱http://java.dzone.com/tips/turning-session-fixation)。

要真正找到一個地方的Tomcat 7並不這樣看: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.55/org/apache/catalina/connector/Request.java#2942

+0

謝謝。我找到了原因。 如果設置sessionCookiePath =「/」,那麼tomcat通過請求的sessionid值創建新的會話。 thx很多! – 2014-10-23 08:54:29

相關問題