跨域請求,關於後端session會話丟失的解決辦法

目前使用前後端分離的模式開發,後端提供跨域接口、前端jsonp調用,綁定數據,但是在該站點下有個人中心模塊存在的情況下,服務端的session會話會被跨域請求覆蓋改掉

大家都知道tomcat使用cookie中jsessionid來區分客戶端session會話

跨域請求接口恰恰有時候響應回來回改變該站點下的jsessionid值,導致服務器每次判斷都是一個新的會話

 

以網站個人中心模塊來說,每一個跨域jsonp請求,都會Response 一個cookie值,SET-COOKIE:JSESSIONID=XXXX,如下圖:

 


 

再看服務端,前端刷新一次也沒,後端服務會話id都不是同一個sessionid,所有後端所有的請求都是未登錄,這就導致前端發送的請求,後端無法拿到當前個人用戶信息


 

目前服務端部署都採用tomcat,所以修改辦法是在conf/context.xml文件中,設置sessionId的cookieName別名,不和默認的jsessionid一直,如下:


最終修改好後,再看服務器的cookie值,服務端使用session取的cookie值是剛剛設置的別名cookie值SHGJSESSIONID,所以不受跨域接口影響


最終服務端請求的session會話能保證是同一個,所以也能取到當前登錄的個人信息

 

 

 

更多tomcat參數設置值請參考  tomcat-context參數值

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章