J2EE社區

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

          同一服務器 應用的Session沖突

          Posted on 2016-05-06 12:33 xcp 閱讀(1844) 評論(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: 聯系我


          主站蜘蛛池模板: 武乡县| 宜宾县| 宁国市| 石景山区| 河津市| 琼中| 绥阳县| 巨鹿县| 武穴市| 怀化市| 县级市| 商都县| 柏乡县| 博客| 青田县| 岑溪市| 雅安市| 毕节市| 鹤山市| 云霄县| 闵行区| 恭城| 乌兰县| 且末县| 西宁市| 万盛区| 滁州市| 丰县| 万宁市| 黎城县| 美姑县| 罗源县| 绥德县| 溧水县| 余庆县| 金秀| 右玉县| 张家港市| 陇西县| 西藏| 五台县|