J2EE社區

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          同一服務器 應用的Session沖突

          Posted on 2016-05-06 12:33 xcp 閱讀(1863) 評論(0)  編輯  收藏 所屬分類: 雜亂無章

          使用apache反向代理解決在應用A使用Iframe嵌入應用B的功能而產生的跨域問題后,應用B的功能能正常使用了。但也產生了另外一個問題:打開應用A的任何頁面都會跳轉主頁,問題原因是:session丟失。

          具體分析:

          session是通過在客戶端生成一個cookie,所有請求會帶上這個cookie。一個cookie的NAME、Domain和Path屬性值均相同,則會覆蓋,若未設置Domain域,則域為ip(不包括端口),因此應用A的session被應用B的session覆蓋了。


           

          經測試:tomcat、weblogic、websphere的session默認都是JSESSIONID 為key來識別的,因此在沒有特別設置下,同一個域下的多個應用session會互相覆蓋。 

          解決辦法:

          設置各個應用使用不同的cookie-name,或者將JSESSIONID的path路徑設置為不同。

          1)WebLogic的Cookie相關配置:weblogic.xml

           

          屬性名

          默認值
          cookie-name JSESSIONID 如未設置,默認為“JSESSIONID”
          cookie-path NULL 如未設置,默認為“/”
          cookie-domain NULL 如未設置,默認為發放cookie的服務器的域

           

          示例代碼:  
          1.  <session-descriptor2.  <session-param3.  <param-name>CookieName</param-name4.  <param-value>HADFCookie</param-value5.  </session-param6.  </session-descriptor>

           
                    2. WebLogic如何設置session超時時間  http://tonyaction.blog.51cto.com/227462/201900
           
           

          2)websphere的設置(設置不同JSESSIONID的path)

          應用程序->企業應用程序-> [Application Server] ->
          會話管理->1.覆蓋會話管理(需打鉤).
          會話管理->2.啟用 cookie(需打鉤)->修改'Cookie路徑' 

           

          3)Tomcat的設置(設置不同JSESSIONID的path)

          修改tomcat/conf/server.xml: 

           

          1.tomcat5修改方法

          在啟動項中增加org.apache.catalina.SESSION_COOKIE_NAME參數

          linux
          JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘

          win
          set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“

          2.tomcat6和tomcat7修改方法相同

          在Context容器標簽上增加sessionCookieName參數

          <Context path=”/” docBase=”webapp” reloadable=”false” sessionCookieName=”yoursessionname”></Context>

          還可以加上sessionCookiePath

          <Context ... sessionCookiePath="/" > ... </Context>

          延伸閱讀:tomcat修改jsessionid在cookie中的名稱 http://blog.shilimin.com/338.htm




          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
          mail: 聯系我


          主站蜘蛛池模板: 积石山| 论坛| 临西县| 延津县| 新沂市| 安远县| 日喀则市| 齐河县| 集安市| 扎囊县| 尚志市| 镇平县| 黔南| 武穴市| 沛县| 莱州市| 昆山市| 河南省| 新巴尔虎右旗| 旅游| 天峻县| 凤冈县| 濮阳县| 肇源县| 博客| 临桂县| 兴化市| 赞皇县| 黄平县| 集贤县| 荥经县| 兖州市| 长治市| 冕宁县| 尚志市| 上饶县| 祁阳县| 大同县| 湖州市| 广宁县| 宁强县|