2016-04-15 69 views
0

我已經基於簡單的JSP-Servlet創建了一個Java Web應用程序。我有一個專用的靜態IP服務器(例如ip - 102.30.101.5)。在端口8080上,IIS運行Apache Tomcat正在運行的端口9090上的&。我已經在端口9090(Apache Tomcat)上部署了我的Web應用程序(demoapp)。 我有一個域(示例域 - example.com或www.example.com),將此域重定向到我的靜態IP,使用A-域即www.example.com到102.30.101.5域重定向後,在基於Jsp-Servlet的應用程序中丟失會話

在IIS中,我有配置(IIS中的URL重寫選項)傳入的URL請求,如果www.example.com是傳入請求,則將其重定向到運行我的Web應用程序的端口9090(Apache Tomcat)。

做完所有這些之後,我遇到了一個大問題。

當我訪問我的應用程序使用IP即102.30.101.5:9090/demoapp時,它的工作正常。 但是當我通過www.example.com訪問時,爲每個請求創建新的sessionid。例如,對於同一瀏覽器,它在每個請求上創建不同的sessionid。因此,我無法維護日誌記錄用戶的會話。 也影響搜索引擎優化。

我想,它的重定向問題,但完全不知道是什麼問題。

請儘快幫忙。

謝謝。

回答

1

我假設你的會話是通過cookie進行維護的。 Cookie始終侷限於特定的主機名 - 並且IP地址具有完全不同的主機名的資格。無論何時您更改主機名稱,完全預計會丟失會話,因爲這是Cookie(最常用的會話標識符存儲)的工作方式。

有加入會話標識符的URL的一種方式,但如果你鏈接到外部服務器,因此,這是一個潛在的會話泄漏和不推薦,除非你絕對知道這是容易出現在外部服務器的日誌會話什麼你在做。

在創建會話之前,您應該以某種方式配置您的重定向,以便在有人通過意外主機名或IP地址與您的服務器聯繫時重定向。

+0

謝謝Sir @ olaf-kock我也嘗試了其他會話跟蹤方法,但獲得相同的輸出。 –

+0

只要有人來到另一個比標準主機名稱,你設置了早期和立即重定向。沒有更多的需要擺弄和嘗試其他技術。正如我上面所說:他們有已知的問題,*絕對*知道這些問題是一個*真正的*先決條件。 *「絕對」*上的斜體是故意的。 –