es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer una solicitud a la API de intercambio de Coinbase desde localhost?

Cuando ejecuto el siguiente código desde el lado del cliente en JavaScript, tal como dice la documentación de Coinbase Cloud en https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcoinbaseaccounts

  const options = {
  method: 'GET',
  headers: {
    Accept: 'application/json',
    'cb-access-key': 'Apikey',
    'cb-access-passphrase': 'Mypassphrase',
    'cb-access-sign': cb_access_sign,
    'cb-access-timestamp': cb_access_timestamp
  }
};

fetch('https://api.exchange.coinbase.com/coinbase-accounts', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

Cuando lo hago con axios, ocurre lo mismo

En la consola aparece el siguiente error: “Access to fetch at ‘https://api.exchange.coinbase.com/coinbase-accounts’ from origin ‘http://localhost:3000’ has been blocked by CORS policy: Request header field cb-access-passphrase is not allowed by Access-Control-Allow-Headers in preflight response.”

¿Qué estoy haciendo mal?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el servidor no permite el encabezado cb-access-passphrase en la respuesta de pre-vuelo. Este problema está relacionado con la política de CORS (Compartir recursos de origen cruzado). Para solucionar este problema, debes asegurarte de que el servidor permita explícitamente los encabezados necesarios en la respuesta para la solicitud OPTIONS de pre-vuelo.

    Una solución consiste en agregar los encabezados CORS necesarios en el lado del servidor. Si tienes acceso al servidor, puedes incluir los siguientes encabezados en la respuesta para permitir los encabezados requeridos:

    Access-Control-Allow-Origin: http://localhost:3000
    Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
    Access-Control-Allow-Headers: cb-access-key, cb-access-sign, cb-access-timestamp
    

    Alternativamente, puedes utilizar un servidor proxy para realizar la solicitud desde el lado del cliente, de modo que no se aplique la política de CORS. Esto se puede lograr configurando un proxy en tu servidor y enviando la solicitud de API hacia ese proxy en lugar de enviarla directamente al punto de extremo de la API de CoinBase.

Comments are closed.