Я пытаюсь сделать SOAP-запрос от моего реагирующего веб-приложения на Dynamics NAV 2017, и я получаю следующие ошибки:
1) ВАРИАНТЫ http: // ... 401 (неавторизовано)
2) Доступ к XMLHttpRequest по адресу 'http: ...' from origin 'http://localhost:3000' заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: Нет' Access-Заголовок Control-Allow-Origin 'присутствует в запрошенном ресурсе.
Вот мой код:
let soap = () => {
var result = null;
var urlsoap = 'http://schemas.xmlsoap.org/soap/envelope';
try {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
let request = `
<soapenv:Envelope xmlns:Soap=${urlsoap}>
<soapenv:header>
<soapenv:Body>
<ValidateUser>
<userName>SOMEUSER</userName>
</ValidateUser>
</soapenv:Body>
</soapenv:header>
</soapenv:Envelope>`;
// Setup event handler when readystate changes
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
var xmldoc = xmlhttp.responseXML;
xmldoc.setProperty('SelectionLanguage', 'XPath');
xmldoc.setProperty('SelectionNamespaces', 'xmlns:tns="' + 'urn:microsoft-dynamics-schemas/codeunit/...' + '"');
result = xmldoc.getElementsByTagName('ValidateUser_Result');
}
}
}
xmlhttp.open('POST', URL, true);
xmlhttp.setRequestHeader('SOAPAction', 'POST');
xmlhttp.setRequestHeader('Access-Control-Allow-Origin','*');
xmlhttp.setRequestHeader('Access-Control-Allow-Origin','Content-Type');
xmlhttp.setRequestHeader('Access-Control-Allow-Origin','GET,PUT,POST,DELETE');
xmlhttp.setRequestHeader("Authorization", "Basic " + btoa(myusername:mypassword));
xmlhttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xmlhttp.withCredentials = true;
xmlhttp.send(request);
}
catch (e) {
console.log(e);
}
return result;
}
soap();
Это мой первый запрос на мыло, поэтому синтаксис может быть неправильным.Я уже попробовал пакет 'easy-soap-request', но получаю те же ошибки.Любая помощь будет высоко ценится.