同域名下的多項目謹防sessionid互相影響,造成嚴重後果

咱也上首頁:


同域名下的多項目謹防sessionid互相影響,造成嚴重後果,保持咱程序猿的優良傳統,獨立的命名空間,嚴格的潔癖症,處事不驚的頑強能力。轉入正題 已我開發cctv項目爲例,當然cctv願意找我,我是很樂意效勞的,哈哈!!不過我是無證程序猿,很可能去了也是臨時工,好吧,我還是拿他做例子吐槽吧:

www.cctv.com/zhidao

www.cctv.com/news

這裏將zhidao、news兩個項目通過nginx整合到www.cctv.com的二級目錄下,如果tomcat的配置是這樣:


  <Context path="/zhidao" docBase="/zhidao.cctv.cn" sessionCookiePath="/"  sessionCookieDomain=".cctv.com"  reloadable="false" caseSensitive="false" crossContext="true">
         </Context>


  <Context path="/news" docBase="/news.cctv.cn" sessionCookiePath="/"  sessionCookieDomain=".cctv.com"  reloadable="false" caseSensitive="false" crossContext="true">
         </Context>


那麼後果很有意思,比如zhidao、news、www都有自己的用戶體系,都有登陸功能,那麼登陸後記錄的sessionid在瀏覽器的表現都是JSESSIONID,並且保持的目錄都是/這個根目錄,域名爲根域。這種情況在firefox下面就會影響之前登陸的系統了。


其實很好理解,還可以看head信息:

本來想自己弄一套圖的,但是有點懶,盜用解決公司問題是截下的圖,大家勿噴,多多包含!!!!

第一個域名登陸後的請求信息,注意裏面的JSESSIONID

第二個域名登陸後的請求信息,注意裏面的JSESSIONID


第一個域名再次訪問請求信息,注意裏面的JSESSIONID,和響應信息,注意這也有sessionID,這裏發生了重定義




怎麼辦,找有經驗的google,或者官方網站,但就別看baidu了,一般做技術的都懂,你呢,應該懂得。。。


正確配置如下

  <Context path="/zhidao" docBase="/zhidao.cctv.cn" sessionCookiePath="/zhidao"  sessionCookieDomain=".cctv.com" sessionCookieName="CCTVZD_SESSIONID" reloadable="false" caseSensitive="false" crossContext="true">
         </Context>


  <Context path="/news" docBase="/news.cctv.cn" sessionCookiePath="/news"  sessionCookieDomain=".cctv.com" sessionCookieName="CCTVNEWS_SESSIONID" reloadable="false" caseSensitive="false" crossContext="true">
         </Context>


有始有終,奉上官方祕方:

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html





發佈了87 篇原創文章 · 獲贊 18 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章