做爲一個開發JavaWeb應用的程序猿,都喜歡將用戶登陸後的用戶信息(好比說用戶id,用戶名稱)放入session中保存,以後在業務邏輯的開發中須要用到用戶信息的時候就能夠輕鬆又方便的從session中取到值。最近在開發微信小程序的時候碰到一個問題就是每次微信小程序請求的時候都會改變sessionid,這就會致使在後面的請求中取不到登陸時保存在session中的用戶信息,其實在先後端分離開發的時候也會碰到這個問題,後端程序員負責服務器端開發,提供接口程序,前端程序員負責客戶端開發,調用後端程序員提供的接口程序獲取數據,此時,前端程序員請求的每一個接口程序也是都會改變sessionid的,因些也沒法獲取到登陸時保存在session裏的用戶信息。前端
常見的session保持方式是,當瀏覽器向服務端發起http請求時,服務端檢查在http頭部cookie參數裏是否包含sessionid,若是有sessionid就根據sessionid去查看存儲在服務器端的session,session裏保存的當前會話的一些信息。若是sessionid沒有服務端就會分配一個,寫到cookie字段裏,瀏覽器下次發起其它請求的時候帶上。程序員
所以,爲了解決上面我說的問題,咱們能夠這樣作,客戶端在第一次請求服務器時,也就是登陸的時候得到一個sessionid,在本地存儲起來,而後在以後每次請求服務器的時候就在header裏面帶上這個sessionid,寫到cookie字段裏。可是有個問題就是,你本地存儲了這個sessionid後那麼之後每次都會是這個sessionid,因此建議在程序每次啓動的時候先清空本地存儲的sessionid,而後發送首次請求獲取新的sessionid。ajax
以下爲ajax請求時在header中帶上sessionid的客戶端代碼:json
$.ajax({ type: 'post', headers: { 'Cookie':'JSESSIONID=1k2naixut68f81q5rpr0c3n4vc' }, data: {}, dataType: 'json', timeout: 30000, url: '/test', success: function (res) { alert("success"); }, error: function (e) { alert("false"); } })