对Discord API的Axios GET请求给出了403禁止响应,但可以在Postman中使用

查尔斯

我正在使用axios向本地环境上的discords API发出HTTP GET请求。

我正在使用以下代码:

axios.get('https://discord.com/api/channels/735303230694621228', {
    withCredentials: true,
    headers: {
      Authorization: 'Bot ' + botToken,
    },
  }).then((data) => {
    res = data.response
  })

Bot是频道ID:735303230694621228的所有者,并且拥有所有正确的权限。

实际结果:

预检请求(OPTIONS)给出200的响应以及所有正确的标头。

进行预检后,将会发生GET请求,并给我以下响应:

403 Forbidden

浏览器也会给出CORS错误,但是我很确定这是由于403响应所致,因为403并未提供所有正确的CORS标头。

预期结果:

Status 200 OK

我尝试使用具有相同Bot令牌的Postmanhttps://discord.com/api/channels/735303230694621228,它给我200的预期响应。

有谁知道为什么我在本地环境中将axios与浏览器一起使用时为什么得到403,而邮递员却收到200的响应?

贾克斯

不和谐的响应以403用于一些 User-AgentS上一些API资源。

要对此进行测试,请发送一个邮递员请求,并将您的User-Agent标头设置为与浏览器匹配的值,例如User-Agent: Mozilla/5.0

遗憾的是,即使您在的配置中定义User-Agent标头,浏览器也会覆盖标头中标头axios.get().get()

以上就是Postman(User-Agent: PostmanRuntime/7.0.0)收到200响应但浏览器(User-Agent: Mozilla/5.0)收到响应的原因403


值得注意的是,Discord API文档并未对此进行解释(截至2020年8月)https://discord.com/developers/docs/resources/channel#get-channel

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章