DiscordAPIへのAxiosGETリクエストは、403禁止応答を返しますが、Postmanで機能します
私はaxiosを使用して、ローカル環境のdiscordsAPIにHTTPGETリクエストを送信しています。
私は以下のコードを使用しています:
axios.get('https://discord.com/api/channels/735303230694621228', {
withCredentials: true,
headers: {
Authorization: 'Bot ' + botToken,
},
}).then((data) => {
res = data.response
})
ボットはチャネルID:735303230694621228の所有者であり、すべての正しい権限を持っています。
実結果:
プリフライトリクエスト(OPTIONS)は、すべての正しいヘッダーで200の応答を返します。
プリフライト後、GETリクエストが発生し、次の応答が返されます。
403 Forbidden
ブラウザでもCORSエラーが発生しますが、403がすべての正しいCORSヘッダーを提供するわけではないため、これは403応答が原因であると確信しています。
期待される結果:
Status 200 OK
やってみます https://discord.com/api/channels/735303230694621228 同じボットトークンを持つPostmanを使用すると、予想される本文で200の応答が得られます。
ローカル環境のブラウザーでaxiosを使用すると403が返されるのに、postmanで200の応答が返される理由を誰かが知っていますか?
回答
不和応答403
のためのいくつかの User-Agent
上のいくつかのAPIリソース。
これをテストするには、User-Agent
ヘッダーをブラウザに一致する値に設定してPostmanリクエストを送信します。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