使用node.js从Spring Boot 2响应中读取传入的HTTPS头

时间:2018-05-21 13:48:56

标签: javascript node.js https http-headers response

下面在这个例子中,在变量'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 :(得分:1)

响应头应该在res.headers对象中可用,例如

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

请参阅:https://nodejs.org/api/https.html

e.g。

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());    
    });
});

//也尝试使用Request library

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);
    }
});

答案 1 :(得分:1)

您可以在 https 模块中获取标题。

这是您获取响应的标题的方式。

model.predict

我已在下面的示例中更新了您的代码:

res.headers

希望这有帮助。