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.

Utilice la API de administración desde el Frontend (comercio sin cabeza) para obtener productos de Shopify.

Desde mi frontend, estoy intentando obtener productos con la API de administración (GraphQL) de Shopify con el siguiente código:

*Utilicé “axios” en el Quasar Framework y esto es un Headless Commerce.

const response = await this.$axios({
  url: "https://healthy-food.myshopify.com/admin/api/2022-01/graphql.json",
  method: 'POST',
  headers: {
    "X-Shopify-Access-Token": "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"
  },
  data: { 
    "query": `
      { 
        products(first: 5) {
          edges {
            node {
              id
              title
            }
          }
        }
      }
    `
  }
});
console.log(response.data);

Pero obtengo el siguiente error:

La solicitud de acceso a XMLHttpRequest a ‘https://healthy-food.myshopify.com/admin/api/2022-01/graphql.json’ desde el origen ‘http://localhost:8080’ ha sido bloqueada por la política del mismo origen: la respuesta a la solicitud de prefactibilidad no supera la comprobación de control de acceso: El encabezado ‘Access-Control-Allow-Origin’ no está presente en el recurso solicitado.

A continuación, agregué el encabezado Access-Control-Allow-Origin: * yContent-Type: application/json, como se muestra a continuación:

const response = await this.$axios({
  url: "https://healthy-food.myshopify.com/admin/api/2022-01/graphql.json",
  method: 'POST',
  headers: {
    "X-Shopify-Access-Token": "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",
    "Access-Control-Allow-Origin" : "*", // Aquí
    "Content-Type": "application/json" // Aquí
  },
  data: { 
    "query": `
      { 
        products(first: 5) {
          edges {
            node {
              id
              title
            }
          }
        }
      }
    `
  }
});
console.log(response.data);

Pero sigo obteniendo el mismo error:

La solicitud de acceso a XMLHttpRequest a ‘https://healthy-food.myshopify.com/admin/api/2022-01/graphql.json’ desde el origen ‘http://localhost:8080’ ha sido bloqueada por la política del mismo origen: la respuesta a la solicitud de prefactibilidad no supera la comprobación de control de acceso: El encabezado ‘Access-Control-Allow-Origin’ no está presente en el recurso solicitado.

¿Hay alguna forma de solucionar este error?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, existen algunas formas de resolver el error CORS (Compartición de Recursos de Origen Cruzado). Una solución es configurar el servidor (en este caso, Shopify) para incluir el encabezado “Access-Control-Allow-Origin” en la respuesta. Esto se puede hacer agregando el siguiente código al código del lado del servidor de Shopify:

    response.headers.set('Access-Control-Allow-Origin', '*');
    response.headers.set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE');
    response.headers.set('Access-Control-Allow-Headers', 'Content-Type');
    

    Otra solución es utilizar un servidor proxy para realizar la solicitud en lugar de enviarla directamente desde el frontend. El servidor proxy agregará los encabezados necesarios a la solicitud y la enviará al servidor. Esta solución requiere configurar un servidor proxy y configurar el frontend para enviar las solicitudes al servidor proxy en lugar del servidor real.

    Finalmente, una solución temporal puede ser utilizar una extensión del navegador como CORS Everywhere o desactivar temporalmente la seguridad CORS en el navegador. Sin embargo, esto no se recomienda ya que puede dejar tu sitio web vulnerable a ataques de seguridad.

Comments are closed.