Как можно безопасно реализовать сторонние вызовы API с помощью JavaScript в магазине BigcCommerce? - PullRequest
1 голос
/ 03 июля 2019

Я хочу сделать несколько API-запросов для перевозчиков на странице продукта BigCommerce, и у меня есть некоторые учетные данные для этих запросов, которые я не хочу показывать в своем коде JS.В соответствии с конкретной средой BigCommerce я не могу вносить какие-либо изменения в внутренний код.Я прочитал много похожих вопросов, и теперь у меня есть только один вопрос.

Это единственный способ сделать это, используя мой собственный веб-сервер API, который будет хранить учетные данные и отправлять POST-запрос стороннему API?Затем я получу эту информацию, используя запрос POST через JS к своему собственному API.

Я попытался запустить приложение Ruby API на веб-сервере nginx.Однако это не удалось, поскольку браузер заблокировал мой запрос fetch () в соответствии с политикой CORS.Я попытался добавить параметр Access-Control-Allow-Origin: * в заголовок ответа сервера, записав его в файл конфигурации ruby, но браузер не распознал его.Также я попытался настроить файл конфигурации на стороне nginx, но это не помогло мне с ответом политики CORS.Это интересно, потому что с помощью приложения Restlet я получил ответ от своего собственного API-приложения с правильной информацией и статусом "ok".

(async function application() {
  let dataRuby = {
     url: 'http://IP_address/index',
     body: {"name": "21312", "year": "2019"}
  };
  function getApi(data) {
     let myInit = {};
     myInit.method = "POST"; 
     myInit.body = JSON.stringify(data.body);
     myInit.headers = {
        'Content-Type': 'application/json'
     };
     let myRequest = new Request(data.url, myInit);
     return fetch(myRequest).then(
        res => res.json()
     );
  }
  let response = await getApi(dataRuby);
  console.log(response);
})()

Доступ к выборке на http://IP_address/index из источника 'null' был заблокировансогласно политике CORS: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

...