Метод nodejs http.request не отвечает без ошибок при обратном вызове - PullRequest
0 голосов
/ 11 июня 2019

Я хочу сделать вызов API для моего REST API, работающего на другом порту на том же хосте. Метод http.request отлично работает на локальном хосте, но на производстве он не работает и не возвращает ошибок.

Но это прекрасно работает, когда вызов API выполняется внешним хостом на производстве.

  • Хостинг: Cpanel сервер (Версия 80)
  • ОС: Centos7
  • Nodejs: v10.15.3
  • Framework: Express

Код:

var header = { hostname: url,
    port: 80,
    path: path_info,
   method: 'GET',
   timeout: 5000,
   headers:
   { 
     'Content-Type': 'application/json',
     'Accept-Encoding': 'gzip,deflate,br',
     Authorization: string }
   };

    var http = require('http');
    var zlib = require('zlib');
    console.log('REQUEST');
    var api_req = http.request(header, function(api_res) {
        console.log('RESPONSE');
        let data = [];
            var content_response = '';
            if (api_res.headers['content-encoding'] && api_res.headers['content-encoding'] != '') {
                switch (api_res.headers['content-encoding']) {
                    case 'gzip': content_response = zlib.createGunzip();
                        api_res.pipe(content_response);
                        break;
                    case 'deflate': content_response = zlib.createDeflate();
                        api_res.pipe(content_response);
                        break;
                    default: content_response = zlib.createUnzip();
                        api_res.pipe(content_response);
                        break;
                }
            } else {
                content_response = api_res;
            }

            content_response.on('data', (chunk) => {
                data.push(chunk);
            }).on('end', () => {
                console.log(Buffer.concat(data).toString('utf8'));
            }).on('error', (e) => {
                console.log(e);
            });
    });
    api_req.end();

1 Ответ

0 голосов
/ 13 июня 2019

Проблема с брандмауэром.

Поскольку это был NAT-сервер брандмауэра, нам нужно добавить запись локального хоста для правильной работы внутреннего соединения.

...