La solicitud GET de Axios a la API de discordia da una respuesta prohibida 403, pero funciona en Postman
Estoy usando axios para realizar una solicitud HTTP GET a la API de discords en mi entorno local.
Estoy usando el siguiente código:
axios.get('https://discord.com/api/channels/735303230694621228', {
withCredentials: true,
headers: {
Authorization: 'Bot ' + botToken,
},
}).then((data) => {
res = data.response
})
El Bot es el propietario del ID de canal: 735303230694621228 y tiene todos los permisos correctos.
Resultado actual:
La solicitud de verificación previa (OPCIONES) da una respuesta de 200 con todos los encabezados correctos.
Después de la verificación previa, se producirá la solicitud GET y me dará la siguiente respuesta:
403 Forbidden
El navegador también dará un error CORS, pero estoy bastante seguro de que se debe a la respuesta 403, ya que el 403 no da todos los encabezados CORS correctos.
Resultado Esperado:
Status 200 OK
lo intento https://discord.com/api/channels/735303230694621228 con Postman con el mismo token de Bot y me da una respuesta de 200 con el cuerpo esperado.
¿Alguien tiene alguna idea de por qué obtengo un 403 cuando uso axios con el navegador en mi entorno local, pero obtengo una respuesta de 200 con el cartero?
Respuestas
Discord responde con a 403
para algunos User-Agent
s en algunos recursos de API.
Para probar esto, envíe una solicitud de Postman con su User-Agent
encabezado configurado en un valor que coincida con un navegador, por ejemploUser-Agent: Mozilla/5.0
Lamentablemente, el navegador anulará el User-Agent
encabezado en un axios.get()
, incluso si define uno en su .get()
configuración.
La anterior es la razón por la que Postman ( User-Agent: PostmanRuntime/7.0.0
) recibe una 200
respuesta, pero su navegador ( User-Agent: Mozilla/5.0
) recibe un 403
.
Vale la pena señalar que la documentación de la API de Discord no explica esto (a agosto de 2020)https://discord.com/developers/docs/resources/channel#get-channel