微信小程序中后端无法保持session的原因及解决办法
作者:野牛程序员:2024-04-09 17:57:16网页设计阅读 2897
微信小程序中后端无法保持session的原因及解决办法
问题:
在微信小程序项目中使用wx.request发现会话无法保持,尽管已经确认服务器端的PHP配置正确,包括添加session_start()或者开启session.auto_start,并确保session.save_path配置正确且有读写权限。但是会话仍然不能保持,最终发现是因为wx.request不会自动维护cookie,而导致每次请求都被服务器分配一个新的sessionid,造成会话不能保持的后果。
解决办法:
解决办法是在每次wx.request中带上sessionid或重新封装wx.request。具体实现方法是自己维护一个header,在每次请求中保存和发送Cookie。首先在app.js中存储一个全局变量,存放header,然后在每次wx.request中的请求参数中带上该header,并在每一次响应中检测并保存Cookie到header。
代码示例(仅部分示例代码):
// app.js App({ globalData: { header: { "content-type": "application/x-www-form-urlencoded", 'Cookie': '' } } }) // 页面代码 wx.request({ url: 'http://localhost//login.php', // 带上请求头 header: getApp().globalData.header, method: 'POST', data: { action: "login", user: that.data.userInfo.nickName }, success: function(res){ // 判断后端响应中有没有set-cookie值,有即是后端需要设置cookie,在此例中后端设置session id if (res.header["Set-Cookie"] != null) { // 设置cookie getApp().globalData.header["Cookie"] += res.header["Set-Cookie"] } }, fail: function (res) { console.log(res) wx.showToast({ title: '连接服务器失败', icon: "none" }) } })
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:求整数的位数及各位数字之和c语言
- 下一篇:c++完全平方数判断