收藏
回答

小程序中session同步问题求解

我们在与后台交互时,总是希望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的时候存储起来,


最后一次编辑于  01-04
回答关注问题邀请回答
收藏

4 个回答

  • 深圳花儿绽放网络科技股份有限公司
    深圳花儿绽放网络科技股份有限公司
    01-04

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

    01-04
    赞同 1
    回复
  • 这都申请了
    这都申请了
    01-04

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

    01-04
    赞同
    回复
  • 心灵鸭汤
    心灵鸭汤
    01-04

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

    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)
        }
      })
    }


    01-04
    赞同
    回复 1
    • 半寸灰
      半寸灰
      01-04

      不知道你们  我用java sprigMVC 的session格式是

      Cookie:JSESSIONID=xxxxxxxx


      01-04
      回复
  • 半寸灰
    半寸灰
    01-04

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

    01-04
    赞同
    回复 4
    • 心灵鸭汤
      心灵鸭汤
      01-04

      你的请求的那段代码能看下吗

      01-04
      回复
    • 半寸灰
      半寸灰
      01-04回复心灵鸭汤

      都是不多  

      看看值对不对吧

      我的是这样的JSESSIONID

      Cookie:

      JSESSIONID=xxxxxxxxx;



      你的  是    SESSION


      .do  请求应该是java  我也是java  你用的是什么框架




      01-04
      回复
    • 心灵鸭汤
      心灵鸭汤
      01-04回复半寸灰

      springMVC

      01-04
      回复
    • 半寸灰
      半寸灰
      01-04回复心灵鸭汤

      Cookie:

      JSESSIONID=xxxxxxxxx;

      试试

      01-04
      回复