如何解决对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令牌的Postman来https://discord.com/api/channels/735303230694621228,它给了我200个预期的响应。
有人知道在本地环境中将axios与浏览器一起使用时为什么得到403,但邮递员得到200响应吗?
解决方法
Discord对 some API资源上的 some 403
发出User-Agent
响应。
要对此进行测试,请发送一个邮递员请求,并将您的User-Agent
标头设置为与浏览器匹配的值,例如User-Agent: Mozilla/5.0
可悲的是,即使您在User-Agent
的配置中定义了axios.get()
标头,浏览器也会覆盖.get()
中的User-Agent: PostmanRuntime/7.0.0
标头。
以上就是邮递员(200
)收到User-Agent: Mozilla/5.0
响应但您的浏览器(403
)收到User
的原因的原因。
值得注意的是,Discord API文档没有对此进行了解释(截至2020年8月)https://discord.com/developers/docs/resources/channel#get-channel
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。