Discord API'ye Axios GET isteği 403 yasaklı yanıt veriyor, ancak Postman'da çalışıyor
Yerel ortamımdaki discords API'sine bir HTTP GET isteği yapmak için axios kullanıyorum.
Aşağıdaki kodu kullanıyorum:
axios.get('https://discord.com/api/channels/735303230694621228', {
withCredentials: true,
headers: {
Authorization: 'Bot ' + botToken,
},
}).then((data) => {
res = data.response
})
Bot, kanal kimliği olan 735303230694621228'in sahibidir ve tüm doğru izinlere sahiptir.
Gerçek sonuç:
Ön kontrol talebi (SEÇENEKLER), tüm doğru başlıklarla 200 yanıt verir.
Ön kontrolden sonra GET isteği gerçekleşecek ve bana şu yanıtı veriyor:
403 Forbidden
Tarayıcı ayrıca bir CORS hatası verecektir, ancak 403'ün tüm doğru CORS başlıklarını vermemesi nedeniyle bunun 403 yanıtından kaynaklandığından oldukça eminim.
Beklenen Sonuç:
Status 200 OK
denerim https://discord.com/api/channels/735303230694621228 Postman ile aynı Bot jetonuna sahip ve bana beklenen vücutla 200 yanıt veriyor.
Yerel ortamımda tarayıcıyla axios kullandığım halde neden 403 aldığımı ama postacıdan 200 yanıt aldığımı bilen var mı?
Yanıtlar
Bir ile geçimsizlik yanıt verir 403
için bazı User-Agent
üzerindeki s bazı API kaynakları.
Bunu test etmek için, User-Agent
başlık ayarınız bir tarayıcıyla eşleşen bir değere sahip bir Postman isteği gönderinUser-Agent: Mozilla/5.0
Ne yazık ki, kendi yapılandırmanızda bir tane tanımlasanız bile , tarayıcı bir içindeki User-Agent
başlığı geçersiz kılacaktır .axios.get()
.get()
Yukarıdakiler, Postman ( User-Agent: PostmanRuntime/7.0.0
) 'ın bir 200
yanıt almasının , ancak tarayıcınızın ( User-Agent: Mozilla/5.0
) bir 403
.
Discord API belgelerinin bunu açıklamadığını belirtmekte fayda var (Ağustos 2020'de olduğu gibi)https://discord.com/developers/docs/resources/channel#get-channel