微信小程序中后端无法保持session的原因及解决办法
作者:野牛程序员:2024-04-09 17:57:16网页设计阅读 3712
微信小程序中后端无法保持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++完全平方数判断
