Suitescript使用CORS对使用CORS的第三方进行出站API调用

时间:2018-05-02 14:36:20

标签: javascript c# netsuite suitescript suitescript2.0

我是suitecript的新手,我正在为我的公司在Netsuite中开展定制项目。我想知道是否有人可能有任何类型的参考,或特定的代码示例,可以帮助我解决我发现自己的障碍。我正在尝试整合DLS World Ship,以便我们能够发送进程货件文件,无需将信息复制/粘贴到他们的船舶软件中。

不幸的是,API调用必须在后端代码中完成,就像从JAVASCRIPT发送时一样,我得到了cors错误。

这是我的JS出站API调用:

var RateRequestViewModel = {
};

var jsonURL ="https://dlsworldwideproxy-dev.rrd.co...op/RateRequest";

$.ajax({
  type:"POST",
  data:JSON.stringify(RateRequestViewModel),
  contentType:"application/json",
  url:jsonURL,
  beforeSend: function (request) {
    request.setRequestHeader("UserName", "Example Company Inc.");
    request.setRequestHeader('ApiKey',"insertAPIkeyher e"); 
  },
  success:function(data)
  {
  }
});

如果有人有任何建议或任何形式的提及让我摆脱这个障碍,我们将不胜感激!

2 个答案:

答案 0 :(得分:1)

查看N / https模块的示例。您可以使用它轻松地进行所需的服务器端调用。事实上,我相信如果您使用此模块客户端,请求通过Netsuite代理,因此CORS也不是问题。

简要地说,您的代码看起来像:

var headers = {
    "content-type" : 'application/json',
    "accept": 'application/json'
};

var response =  http.post({url:jsonURL, headers:headers, body:JSON.stringify(payload)}); // synchronous

或客户方:

http.post.promise({url:jsonURL, headers:headers, body:JSON.stringify(payload)}).
    then(function(response){
        //handle the response
    });

答案 1 :(得分:0)

服务器端javascript将无法使用ajax。

您说您需要发送文件,但您的示例contentType是JSON。如果它只是JSON,你可以使用jQuery(不要使用$)来从浏览器调用ajax。这将在客户端脚本的保存功能上完成。

如果您需要发送文件,则需要创建通过afterSubmit触发的SuiteScript脚本和部署。这将允许您阅读文件内容并发布。