我尝试使用jQuery AJAX 将表单数据发布到NetSuite restlet。使用下面的代码将数据发布到NetSuite restlet OAuth1.0。
jQuery(".form-button").click(function(){
jQuery.ajax({
url: "https://tstdXXXXXX.restlets.api.netsuite.com/app/site/hosting/restlet.nl?
script=XXXX&deploy=1",
type: "POST",
crossDomain: true,
dataType: "jsonp",
mode: 'cors',
contentType: "application/json",
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "NLAuth nlauth_account=ACCOUNT#,
nlauth_email=EMAIL, nlauth_signature=XXXXXX, nlauth_role=ROLE#")
}
})
.done(function(data){
console.log(data);
});
});
在使用上述代码最初我得到错误“http://localhost:8080 '已被CORS策略阻止:No 'Access-Control-Allow-Origin' header is present”.为了解决这个问题,我添加了模式“cors”.现在我得到ERR_ABORTED 401.
先谢了
1条答案
按热度按时间h43kikqp1#
首先,您不能再使用旧的NLAuth身份验证方法,因为它不再受支持,必须使用基于令牌的身份验证。https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4623992425.html
其次,你有一个CORS问题,这不是NetSuite特有的问题。TLDR是CORS是浏览器强制执行的安全功能,要解决这个问题,你必须从服务器发送http请求。https://auth0.com/blog/cors-tutorial-a-guide-to-cross-origin-resource-sharing/
我不确定你打算如何部署你正在制作的这个网页,但通常情况下,你需要使用nodejs,php或python等运行时来托管网页并处理API请求。