当前位置:首页网页设计 > 正文

微信小程序中后端无法保持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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 最新推荐

    热门点击