目前使用前后端分離的模式開發,后端提供跨域接口、前端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參數值