国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 小程序 > 正文

微信小程序實現Session功能及無法獲取session問題的解決方法

2020-03-21 15:57:33
字體:
來源:轉載
供稿:網友

因為小程序原生不支持Cookie,因此也不支持Session。

網上找到的的一些方法有缺陷,而且很多累贅,估計沒有實際測試過,在此直接給出實測可用的代碼。

大概思路就是借助小程序本地儲存+網絡請求的header可讀可寫來實現類似瀏覽器的cookies保存session功能。

直接上代碼

function NetRequest({url, data, success, fail, complete, method = "POST", header = { 'Content-type': 'application/x-www-form-urlencoded' }}) { let session_id = wx.getStorageSync('PHPSESSID');//本地取存儲的sessionID if (session_id != "" && session_id != null) { //本地session存在,則放到header里  header.Cookie = session_id; } wx.request({  url: url,  method: method,  data: data,  header: header,  success: res => {   //發現response有Set-Cookie,說明本地的PHPSESSID需要更新或不存在:   if(res.header["Set-Cookie"]){    wx.setStorageSync('PHPSESSID', res.header["Set-Cookie"]);   }   res['statusCode'] === 200 ? success(res.data) : fail(res)  },  fail: fail,  complete: complete })}

其他語言的Session類似方法皆可實現。

PS:下面看下徹底解決小程序無法獲取SESSION問題

最近在開發小程序,發現小程序是通過微信服務器觸發我們服務器,所以每次請求獲取到的session_id都不同,導致小程序中無法獲取session,這樣我就想如果session_id不發生變化,那么session是否可以使用呢???

查看了一下小程序的開發文檔(wx.request);
發起網絡請求中有一個header參數,
我們可以通過header傳遞一個固定參數到后臺,
作為session_id,這樣sesion_id不發生變化,
微信小程序中就可以使用或觸發session了。

一、首先找到第一次發起網絡請求的地址,將服務器返回set-cookie當全局變量存儲起來

wx.request({ ......//此處省略 success: function(res) { console.log(res.header); wx.removeStorageSync('sessionid') //必須先清除,否則res.header['Set-Cookie']會報錯 //set-cookie:PHPSESSID=ic4vj84aaavqgb800k82etisu0; path=/; domain=.zhix.net // 登錄成功,獲取第一次的sessionid,存儲起來 // 注意:Set-Cookie(開發者工具中調試全部小寫)(遠程調試和線上首字母大寫) wx.setStorageSync("sessionid", res.header["Set-Cookie"]); }}) 

二、請求時帶上將sessionid放入request的header頭中傳到服務器,服務器端可直接在cookie中獲取

wx.request({ ...... header: { 'content-type': 'application/json', // 默認值 'cookie': wx.getStorageSync("sessionid") //讀取sessionid,當作cookie傳入后臺將PHPSESSID做session_id使用 }, success: function(res) { console.log(res) }}) 

三、后臺獲取cookie中的PHPSESSID,將PHPSESSID當作session_id使用

<?php// 判斷$_COOKIE['PHPSESSID']是否存在,存在則作session_idif ($_COOKIE['PHPSESSID']) { session_id($_COOKIE['PHPSESSID']);}session_start();echo session_id(); 

總結

以上所述是小編給大家介紹的微信小程序實現Session功能及無法獲取session問題的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 阿拉善盟| 山丹县| 文安县| 军事| 蒙阴县| 怀宁县| 罗山县| 夏邑县| 杨浦区| 福鼎市| 兴化市| 越西县| 洪泽县| 通渭县| 津市市| 富宁县| 河东区| 贞丰县| 凉城县| 奎屯市| 波密县| 武安市| 大庆市| 阿克陶县| 安阳市| 衢州市| 湖州市| 西吉县| 彭阳县| 利辛县| 梁平县| 甘肃省| 集安市| 郯城县| 屏山县| 定远县| 都江堰市| 长垣县| 乐昌市| 西安市|