微信小程序后端無法保持session的原因及解決辦法問題-創(chuàng)新互聯(lián)

之前未接觸過微信小程序項目,在使用jQuery庫的ajax中很正常,服務器也能保持會話狀態(tài)。在使用wx.request中發(fā)現(xiàn)會話一直不能保持,一開始以為是服務器php.ini配置錯誤,

成都創(chuàng)新互聯(lián)成都網站建設按需定制制作,是成都網站制作公司,為成都陽臺護欄提供網站建設服務,有成熟的網站定制合作流程,提供網站定制設計服務:原型圖制作、網站創(chuàng)意設計、前端HTML5制作、后臺程序開發(fā)等。成都網站制作熱線:13518219792
  • 在代碼中加入session_start()或者開啟session.auto_start()
  • 確認session.save_path配置正確且有讀寫權限

的情況下仍無效果。以上方法確實可以解決大多數(shù)情況下的頁面刷新session無法保持問題。


但是在設置之后都沒有效果。

最后發(fā)現(xiàn),原來是jQuery的ajax(應該是瀏覽器)會自動維護cookie,而wx.request不會。
這涉及到session與cookie的關系及保存機制的問題。

首先,cookie是保存在客戶端的信息,而session是保存在服務器的信息。

那服務器如何識別單獨用戶的session,在一次連接下,如何判別該用戶是屬于哪一個session。
機制是,服務器生成一個sessionid辨別用戶,并在相應中的cookie帶上該sessionid值。在用戶下一次請求時,請求頭中cookie理應也帶上該sessionid,以便服務器辨別用戶會話。其中辨別機制和session存儲機制涉及到序列和反序列化,在session.save_path中,為每一個session單獨創(chuàng)建一個文件,文件名為sessionid,內容則是此次會話保存的session。

而wx.request并不會在請求中帶上cookie,所以導致每次請求都被服務器分配一個新的sessionid,造成會話不能保持的后果。

解決辦法

應在wx.request中帶上該sessionid,或者重新封裝wx.request。

2019/9/27更新:
自己維護一個header,在wx.request中保存和發(fā)送Cookie。
首先在app.js中存儲一個全局變量,存放header。

globalData: {
  header: {
   "content-type": "application/x-www-form-urlencoded",
   'Cookie': ''
  }
 }

網站題目:微信小程序后端無法保持session的原因及解決辦法問題-創(chuàng)新互聯(lián)
網站網址:http://muchs.cn/article6/egoog.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站排名、商城網站、網站導航、響應式網站、網站制作定制網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網頁設計公司