浏览器能正常访问的url,superagent不能正常访问

在写音乐播放器的过程中,我需要获取qq音乐排行榜的信息,于是我向以前一样,在后台的MusicController中添加一个getTopList方法
然后写下以下代码

// 获取排行
  async getTopList(ctx) {
    const url = 'https://c.y.qq.com/v8/fcg-bin/fcg_myqq_toplist.fcg'
    const data = Object.assign({}, commonParams, {
      g_tk: 5381,
      uin: 0,
      format: 'json',
      notice: 0,
      platform: 'h5',
      needNewCode: 1,
      _: 1533213793328
    })
    ctx.body = await request.get(url)
      .query(data)
      .then(res => {
        return res.text
      })
  }

然后使用postman来测试我的接口
神奇的事情发生了,204 no content。。。
我试着打印了一下发现res.text是undefine
于是我又考虑是不是referer的原因,添加了以下两行代码

.set('referer', 'https://y.qq.com/m/index.html')
.set('host', 'c.y.qq.com')

结果还是undefine
这下我没办法了,开始了面向google编程
最后在superagent仓库中的issue中找到了解答
原来当mime的type是x-javascript时,superagent获取数据没有缓冲,需要添加buffer(true)才能获取到,

 ctx.body = await request.get(url)
      .query(data)
      .set('referer', 'https://y.qq.com/m/index.html')
      .set('host', 'c.y.qq.com')
      .buffer(true)
      .then(res => {
        return res.text
      })

这样我就获取到了正确的数据
接下来我就开始搜索x-javascript到底是何方神圣 ,在stackoverflow上看到了这篇文章
原来application/x-javascripttext/javascriptapplication/javascript的一个过渡,而且x-javascript是实验性的,请不要使用他

转载于:https://www.cnblogs.com/swust-wangyf/p/9410544.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值