NetSuite Restlet Использование jQuery
Я пытаюсь получить доступ к рестлету NetSuite с помощью jQuery. Вот мой код для этого:
jQuery.ajax({
url: "https://rest.na2.netsuite.com/app/site/hosting/restlet.nl?script=270&deploy=1&searchId=customsearch_active_models",
type: "GET",
dataType: "json",
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);
});
Когда я проверяю вкладку "Сеть" в Chrome/FF, она дает мне следующий ответ 401:
XMLHttpRequest cannot load https://rest.na2.netsuite.com/app/site/hosting/restlet.nl?script=270&deploy=1&searchId=customsearch_active_models. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.tracksandtires.com' is therefore not allowed access. The response had HTTP status code 401.
Я неправильно форматирую часть авторизации? Я не могу найти какую-либо документацию по доступу к NetSuite Restlet через jQuery, поэтому я как бы стреляю в слепую. Должен ли я просто использовать ванильный JavaScript, а не JQuery? Любая помощь приветствуется!
2 ответа
Попробуйте использовать jsonp следующим образом:
jQuery.ajax({
url: "https://rest.na2.netsuite.com/app/site/hosting/restlet.nl?script=270&deploy=1&searchId=customsearch_active_models",
type: "GET",
crossDomain: true,
dataType: "jsonp",
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);
});
Подробнее: Как работает заголовок Access-Control-Allow-Origin?
В основном не
Хотя ответ @adolfo-garza действительно показывает JSONP правильно, вы ничего не получите, используя Restlet, и вы отказываетесь от логина, который никогда не может быть использован для чего-то чувствительного. По сути, вы опубликовали один из своих учетных данных Netsuite в общедоступном Интернете. Ничего хорошего из этого не выйдет.
Это один из вариантов использования Suitelets. Вы создаете Suitelet, который имеет публичный доступ (доступен без входа в систему; аудитория всех ролей), а затем вам не требуется проверка подлинности (хотя есть способы полагаться на проверку подлинности сеанса покупок или проверки заказа, если вам нужна фильтрация информации по клиенту).
Если вы просто пытаетесь протестировать реальный вариант использования Restlet, то вам следует использовать Node или какое-либо не-браузерное приложение для этого.