Обработка CORS с использованием узла js для связи с внешним REST API - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь вызвать внешний API REST через приложение Angular.API размещен на отдельном сервере / домене, поэтому мы столкнулись с проблемой CORS.Чтобы избежать проблемы с CORS, я пытаюсь создать сквозную службу с помощью сценария узла js на сервере, где размещено приложение Angular.Однако, когда вызов API выполняется из сценария узла js с использованием модуля request / https, мы получаем сообщение об истечении времени ожидания соединения / Ошибка соединения. [Примечание: я не имею права вносить какие-либо изменения в заголовки в конце / коде API]

Когда мы пытаемся вызвать API с помощью инструмента Postman, мы можемполучить ответ.Согласно моему пониманию о CORS, браузер блокирует междоменный запрос по соображениям безопасности из-за той же политики происхождения.При использовании инструмента почтальона они не ограничены этой политикой, и поэтому мы получаем ответ через API с помощью инструмента почтальона.

Кроме того, я также пытался пропинговать сервер API через командную строку, но запрос синхронизированout (я думаю, что ICMP-соединение на сервере отключено).

Я хочу знать:

  1. Почему в соединении отказывается, когда API вызывается с помощью сценария nodejs?
  2. Есть ли способ достичь того же поведения, что и при работе с инструментом 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...