小程序调用接口时发送cookie报错500的解决方法

小程序向服务器发送cookie

  • 1.随便说点啥
  • 2.获取、存储cookie
  • 3.读取、发送cookie
  • 4.本菜鸟踩的一个巨坑
  • 5.最后一点tips

1.随便说点啥

本人小白一个,最近刚开始做个小程序,在调用一个接口时向服务器发送cookie出现了500错误,网上方法搜了个遍,花了整整一天半才解决,最后发现自己错在哪时差点吐血。。是我太菜了。。现在把我的经验分享一下,给碰到问题的老哥们节省点时间。。

2.获取、存储cookie

登录页获取cookie:

wx.request({
      url: 'xxxxxxxxxxxxxxxxxx',    //你要调用的接口地址
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      data: {
        phoneNumber: phoneNumber,    //你要发送给接口的数据
        password: password    //你要发送给接口的数据
      },
      success: res => {
        wx.setStorageSync('sessionid', res.cookies[0]),    //存储cookie到本地
        console.log(res);
        wx.redirectTo({ 
            url: "xxxxxxxxxxxxx"    //登录成功获取cookie后跳转到指定页面
        });
      },

结果如图所示:

可以看到,这里得到的cookie是由好几段字符串以分号分割组成的。然而发送给服务器时只需要其中的第一段,也就是sessionid这段,我们就需要把这个cookie进行分割。

3.读取、发送cookie

调用接口页发送cookie:

Page({
  data: {
  },
  onShow: function () {
    let sessionid = wx.getStorageSync("sessionid").split(';')[0].split('=')[1];    //使用split对得到的cookie进行分割
    let cookie = 'sessionid='+sessionid;    //分割完之后只剩下sessionid对应的字符串,但要发送的cookie格式是“sessionid=xxx”,所以还要进行拼接,把前面的头给加上去
    wx.request({
      url: 'xxxxxxxxxxxxxxxx',    //你要调用的接口地址
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded",
        "cookie": cookie    //在header里面加上cookie
      },
      data: {
        currentPage: '1'    //要发送的数据,根据自己的需要填写
      },
      success: res => {
        console.log(res);
      }
    })
  }
})

结果如图所示:
在这里插入图片描述
可以看到,结果为200,正常访问。

4.本菜鸟踩的一个巨坑

感觉应该都知道,但万一万一万一有人跟我一样啥都不懂呢。。在这说下吧。卡了我这么久还有个很重要的原因,调用接口时发送的data我刚开始没填。。我以为data本就是选填,不填也行,结果疯狂报错500。。最后我去网页端看了一下,查看方法为鼠标右键后点击最下方的“检查”,之后操作如图所示:
小程序调用接口时发送cookie报错500的解决方法_第1张图片
在右边显示的文本区往下拉,看到有个from data,如图所示:
小程序调用接口时发送cookie报错500的解决方法_第2张图片
看到这我心里一凉,靠,这有这玩意啊。。赶紧在代码里把这个currentpage给加了进去,一运行,该死的500报错终于没了。。这么小的错,唉。。

5.最后一点tips

完事之后我又分别试了几遍,发现如果不加“sessionid=”这个字符串拼接或者不加应有的data,都会报错500。这是我第一篇CSDN的文章,希望能给各位一点帮助~

你可能感兴趣的:(小程序调用接口时发送cookie报错500的解决方法)