Я пытаюсь вызвать внешний API REST через приложение Angular.API размещен на отдельном сервере / домене, поэтому мы столкнулись с проблемой CORS.Чтобы избежать проблемы с CORS, я пытаюсь создать сквозную службу с помощью сценария узла js на сервере, где размещено приложение Angular.Однако, когда вызов API выполняется из сценария узла js с использованием модуля request / https, мы получаем сообщение об истечении времени ожидания соединения / Ошибка соединения. [Примечание: я не имею права вносить какие-либо изменения в заголовки в конце / коде API]
Когда мы пытаемся вызвать API с помощью инструмента Postman, мы можемполучить ответ.Согласно моему пониманию о CORS, браузер блокирует междоменный запрос по соображениям безопасности из-за той же политики происхождения.При использовании инструмента почтальона они не ограничены этой политикой, и поэтому мы получаем ответ через API с помощью инструмента почтальона.
Кроме того, я также пытался пропинговать сервер API через командную строку, но запрос синхронизированout (я думаю, что ICMP-соединение на сервере отключено).
Я хочу знать:
- Почему в соединении отказывается, когда API вызывается с помощью сценария nodejs?
- Есть ли способ достичь того же поведения, что и при работе с инструментом Postman с помощью скрипта узла?
Вот скрипт NodeJs и его выходные данные:
const shttp = require('http-https');
const userConf = {
path: 'https://<API DOMAIN>:5001/<API PATH>/',
method: 'POST'
};
const appDetails = {
UserID: 'sandboxadmin',
Password: 'xxxxx',
LoginType: 'LOGIN'
};
const httpRequest = shttp.request(userConf, function (res) {
res.setEncoding('utf8');
if (res.statusCode == 200) {
let body = "";
res.on('data', function (result) {
body += result;
});
res.on('end', function () {
console.log("API response is\n");
console.log(body);
});
} else {
console.log('Request failed:' + res.statusCode);
}
});
httpRequest.on('error', function (e) {
console.log('Request failed error :: ' + e);
});
httpRequest.write('body=' + JSON.stringify(appDetails));
httpRequest.end();
Выход:
Request failed error :: Error: connect ECONNREFUSED 127.0.0.1:80