Чтение входящих HTTPS-заголовков из ответа Spring Boot 2 с помощью node.js - PullRequest
0 голосов
/ 21 мая 2018

Ниже в этом примере в переменной 'obj' я получаю тело ответа.Как получить значения заголовка ответа с помощью этой библиотеки https node.js?

var options = {
    hostname: hostname,
    port: port,
    path: pathMethod,
    method: method,
    headers: {
        'Content-Type': APPLICATION_JSON,
        'Authorization': BEARER + localStorage.jwtToken
    },
    rejectUnauthorized: false,
    agent: false,
    requestCert: false

};

return new Promise(function(resolve, reject) {
var req = https.request(options, function(res) {
        res.setEncoding(ENCODING_UTF8);
        res.on('data', function(result) {

            try {
                const obj = JSON.parse(result);
                resolve({ 'httpStatus': PAGE_STATUS_200, 'result': obj });
            }
            catch(error) {
                console.error(error);
                resolve(resolve({ 'httpStatus': PAGE_STATUS_500 }));
            }

        });

        res.on('end', () => {
            console.log('No more data in response.');
        });
    });

    req.on('error', function(err) {
        console.log(`problem with request: ${err.message}`);
        reject(err);
    });

    if (postData) {
        req.write(postData);
    }

    req.end();
});

В моем браузере я получаю все необходимые заголовки.В чем может быть проблема, что я не могу получить заголовки с помощью https node.js lib?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете получить заголовки в https модуле.

Так вы получите заголовки для ответа.

res.headers

Я обновил ваш код в следующем примере:

    var req = https.request(options, function(res) {
    res.setEncoding(ENCODING_UTF8);
    res.on('data', function(result) {

    console.log("Headers: ", res.headers);

    // Your code here.

    });

    res.on('end', () => {
    // Do something here.
    });
});

Надеюсь, это поможет.

0 голосов
/ 21 мая 2018

Заголовки ответа должны быть доступны в объекте res.headers, например,

// Log headers
console.log('Headers: ', res.headers);

См .: https://nodejs.org/api/https.html

Например,

const https = require ('https');


// This will return the IP address of the client
var request = https.request({ hostname: "httpbin.org", path: "/ip" },  (res) => {
    console.log('Headers: ', res.headers);
    res.on('data', (d) => {
        console.log('/ip response: ', d.toString());    
    });
});

// Такжепопробуйте использовать библиотеку запросов

var request = require('request');

var options = {
    url: "https://httpbin.org/ip",
    method: "get"
};

console.log('Requesting IP..');
request(options, function (error, response, body) {
    if (error) {
        console.error('error:', error);
    } else {
        console.log('Response: Headers:', response && response.headers);
    }
});
...