如何在BigcCommerce商店中使用JavaScript安全地实现第三方API调用?

时间:2019-07-03 13:00:03

标签: javascript api post bigcommerce

我想在BigCommerce产品页面上向运输公司提出一些API请求,并且我有一些凭证,这些凭证我不想在JS代码中显示。根据BigCommerce的特定环境,我无法在后端代码中进行任何更改。我读了很多类似的问题,现在只有一个问题。

使用我自己的API后端Web服务器(存储凭据信息并将POST请求发送到第三方API)是这样做的唯一方法吗?然后,我将通过JS对我自己的API的POST请求接收该信息。

我试图在Nginx Web服务器上运行Ruby API应用程序。但是,此操作未成功,因为浏览器根据CORS政策阻止了我的fetch()请求。我尝试将Access-Control-Allow-Origin:*参数添加到服务器响应标头中,并将其写入ruby配置文件中,但浏览器无法识别它。我也尝试在nginx端设置配置文件,但这对CORS策略响应没有帮助。这很有趣,因为使用Restlet应用程序时,我收到了来自我自己的API应用程序的响应,并带有正确的信息和状态“确定”。

(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处的信息已被CORS策略阻止:请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。

0 个答案:

没有答案