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
})
봇은 채널 ID : 735303230694621228의 소유자이며 모든 올바른 권한을 가지고 있습니다.
실제 결과:
프리 플라이트 요청 (OPTIONS)은 모든 올바른 헤더와 함께 200의 응답을 제공합니다.
프리 플라이트 후 GET 요청이 발생하고 다음 응답을 제공합니다.
403 Forbidden
브라우저는 또한 CORS 오류를 제공하지만 403이 모든 올바른 CORS 헤더를 제공하지 않기 때문에 403 응답 때문이라고 확신합니다.
예상 결과:
Status 200 OK
나는 시도 https://discord.com/api/channels/735303230694621228 동일한 Bot 토큰을 가진 Postman으로 예상되는 본문으로 200 응답을 제공합니다.
내 로컬 환경에서 브라우저와 함께 axios를 사용할 때 왜 403을 받는지 아는 사람이 있습니까?하지만 우체부에서 200 응답을받습니다.
답변
A의 불화 응답 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