Ir al contenido principal

Solucionando conflictos de CORS al acceder a la API del Banco Central de Argentina

Si estás intentando utilizar la API del Banco Central de Argentina desde el front-end de tu sitio web, es posible que te encuentres con un problema de seguridad conocido como CORS. En pocas palabras, CORS es una medida de seguridad implementada por los navegadores web para evitar que una página web haga solicitudes a un servidor desde un dominio diferente al que el servidor está configurado para permitir.


Hace un tiempo hice un video de YouTube en mi canal on the code sobre cómo consumir la API del BCRA con Javascript, pero al recibir consultas sobre cómo resolver el problema de CORS sin utilizar una extensión del navegador (que era lo que estaba haciendo en mi vídeo), decidí crear un proxy para solucionar este problema.


Primero te dejo el video, no olvides suscribirte a mi canal! subo contenido regularmente.



Todo esto de CORS es muy común en las aplicaciones web modernas, ya que a menudo utilizan múltiples servidores y dominios diferentes. Afortunadamente, existe una solución simple para este problema: usar un proxy.


Un proxy es básicamente un servidor que actúa como intermediario entre tu aplicación y el servidor que estás intentando acceder. En otras palabras, en lugar de hacer una solicitud directa al servidor, haces la solicitud al proxy, y el proxy hace la solicitud al servidor en tu nombre. Esto permite que la solicitud provenga del mismo dominio que tu aplicación, evitando conflictos con CORS.


En mi caso, quería acceder a la API del Banco Central de Argentina desde mi sitio web, por lo que creé un proxy para solucionar el problema de CORS. No dudes en utilizar el proxy! acá te comento como hacerlo:


Te muestro un ejemplo para acceder a la cotización del USD, aunque con el proxy se puede acceder a cualquier información que ofrezca la api del BCRA.


Acá te dejo el link a la API: https://estadisticasbcra.com/api/documentacion


const apiUrl = "usd"; const proxyUrl = "https://bcra-proxy-cors.vercel.app"; fetch(`${proxyUrl}/${apiUrl}`, { headers: { Authorization: "BEARER TOKEN", }, }) .then((response) => response.json()) .then((data) => console.log(data))


Este código utiliza fetch para hacer una solicitud GET a la API del Banco Central de Argentina.


1. En la primera const apiUrl, especificamos la información a la que nos gustaría acceder. No es necesario escribir la URL completa de la solicitud, de eso se encarga el Proxy. Por lo tanto, solo se debe escribir exactamente lo que se desea acceder (en este caso "usd").


2. En la segunda const proxyUrl, especificamos la URL del proxy. Desplegué el proxy en Vercel, ya que siempre me ha dado muy buenos resultados y es gratuito.


3. En los headers de la petición, debemos especificar el token BEARER como una cadena de caracteres. Este token se obtiene al registrarse en la API.


Mejor sería hacer lo mismo con async-await try-catch ;)




const fetchData = async () => { const apiUrl = "usd"; const proxyUrl = "https://bcra-proxy-cors.vercel.app"; try { const response = await fetch(`${proxyUrl}/${apiUrl}`, { headers: { Authorization: "BEARER TOKEN", }, }); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } }; fetchData(); 

  


Eso es todo lo que necesitas hacer para utilizar el proxy y evitar todo conflicto con CORS. ¡Que la pasen bien!


Saludos!!


Pablo.


Comentarios

Entradas populares de este blog

Buscador y filtrado de productos en Javascript

Vamos a crear en este articulo un buscador y filtrado de productos en JavaScript paso a paso. Te voy a ir dejando el código limpio para que puedas copiarlo y probarlo en tu proyecto junto con explicaciones. Te dejo también el video de este tutorial por si te interesa tenerlo a mano. ¡No te olvides de suscribirte a mi canal! ♥️. 1) El HTML del buscador del productos en javaScript <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="styles.css" /> <title>Document</title> </head> <body> <h1>BUSCAR PRODUCTOS</h1> <!-- search content --> <div class="search-container"> <input type="text" id="searchInput" placeholder="Search products..." /> ...

Como deployar proyecto Backend con Node.js y Expess.js en Vercel

Se hace bastante simple deployar un proyecto backend con NodeJS y Express en vercel, solo hay que tener en cuenta algunas pocas cosas! te lo voy a ir mostrando en este articulo paso paso, dejándote también el código de ejemplo para que te lo puedas copiar y probar en tu proyecto. Te dejo también el paso a paso en video, no te olvides de suscribirte a mi canal ❤️ Preparando proyecto para deployar en Vercel Vamos a comenzar creando un proyecto simple para deployar, en tu editor de código crea una carpeta llamada app. Dentro de esta carpeta corre el siguiente comando en la consola: npm init -y Esto va a crear un archivo package.json con información básica y necesaria del proyecto. Ahora, dentro de nuestra carpeta app hay que crear otro archivo al cual lo vamos a llamar index.js, es importantísimo que se llame index.js y no de otra forma como app.js o server.js, vercel va a buscar un archivo que se llame index.js a la hora de deployar el código. Entonces la estructura tiene que ir que...

Append vs AppendChild en Javascript ¿ Cuál utilizar ?

No comprendo por que usas append y no appendChild. Hace poco recibí este comentario en uno de mis videos de YouTube en donde muestro como ir paso a paso creando la lógica de un E-commerce con JavaScript. Aquí el video para quien le interese: En verdad esto me motivo a escribir este articulo para explicar la diferencia entre ambos y comentar cual es conveniente utilizar. ¿Qué son append y appendChild? Append y appendChild en JavaScript son metodos para manipular el DOM (es decir: el Document Objet Model). Ambos tienen la facultad de agregar elementos al DOM pero tienen enfoques ligeramente diferentes. El método appendChid Su tarea principal es agregar un único nodo como hijo al final de otro nodo existente. Para utilizarlo, primero hay que seleccionar el nodo al que deseas agregar un hijo y luego llamar a appendChild. Un ejemplo con appendChild() const parent = document.getElementById("parentElement"); const child = document.createElement("div"); parent.appendChil...