Estoy tratando de obtener acceso a la dirección API de Ankr, que es como:
https://apis.ankr.com/XXXX/YYYY/full/main
Al acceder a este enlace por el navegador puedo introducir las credenciales que creé en el panel de control de Ankr y puedo pasar con éxito. Sin embargo, ahora estoy tratando de hacer esto con Web3.js en Node:
var options = { headers: [ { name: 'Authorization', value: 'Basic myUsername:myPassword', },],}; const web3 = new Web3(new Web3.providers.HttpProvider('https://apis.ankr.com/XXXX/YYYY/full/main', options))Y recibo una respuesta de error 401 no autorizado. Supongo que mis credenciales son correctas porque pude acceder a ellas mediante el enlace en el navegador, pero no al pasar el encabezado, parece que no funcionan. ¿Qué está mal en el código o qué falta?
Debe pasar la base64 de myUsername:myPassword , no el texto sin formato real.
// base64 encoded value: 'Basic ' + Buffer.from('myUsername:myPassword').toString('base64'),Consulte los documentos de MDN para obtener más información.
El problema es que las credenciales tenían que ser codificadas de alguna manera.
No sé si esta es la solución más adecuada, pero finalmente resolví esto visitando la dirección en mi navegador ( https://apis.ankr.com/XXXX/YYYY/full/main ), abrí las herramientas de desarrollo en Chrome, e iniciar sesión introduciendo mis credenciales.
Luego recibí la credencial hash enviada en la solicitud al verificar el ENCABEZADO de mi solicitud (en Chrome, esto se hace en Red> la solicitud> Encabezados de solicitud> autorización). ¡Simplemente copié/pegué esta credencial hash en el código js y funcionó!