小程序中session同步问题求解
发布于 5 年前 作者 qhan 8322 次浏览 来自 问答

我们在与后台交互时,总是希望session一致,目前我们解决了wx.request中post和get请求的session同步问题,但是在测试wx.uploadFile时遇到了困难。

常规性的,我们考虑在头文件中加入cookie存储sessionid,如下:‘Cookie’: ‘SESSION=’ + session_id

但是实际情况,在wx.uploadFile的header属性中加入不行,尝试在formData中加入也不行,这导致后端请求时,找不到session,因而报错~~

是否有其他解决方案,恭请大佬提点~~

已经解决,无法正常传session的原因是我们的session管理使用了redis,传统的做法是不行的,我之前的写法是对的’Cookie’: ‘SESSION=’ + session_id,然后’content-type’: ‘application/x-www-form-urlencoded’,

错误的主要原因是我的全局rd_session没有在getsession的时候存储起来,

4 回复

帮我看下,这样的写法有什么问题,我现在是后台获取不到参数

uploadFile:function(){
  var _this=this;
  var url = app.globalData.BASE_URL + '/wx.do?method=wxUpload';
  var session_id = app.globalData.rd_session;
  wx.uploadFile({
    url: url,
    filePath: _this.data.src[0],
    name: 'file',   
    header: {
      'content-type': 'multipart/form-data',
      'charset': 'utf-8',
      'Cookie': 'SESSION=' + session_id
    }, 
    formData:{
      loginFrom: "wx"
    },
    success(res) {
      console.log(res)
      wx.showToast({
        title: '上传成功',
        icon: 'success',
        duration: 1000
      })
    },
    fail({ errMsg }) {
      console.log('uploadImage fail, errMsg is', errMsg)
    }
  })
}

wx.request header可以取到,uploadfile取不到?

把session的值放到url里面作为url参数试试看

我是直接把 响应 set-cookie  的 值 放到 cookie。然后 header设置  cookie

回到顶部