Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node.js从Spring Boot 2响应读取传入的HTTPS头_Javascript_Node.js_Https_Http Headers_Response - Fatal编程技术网

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

Javascript 使用node.js从Spring Boot 2响应读取传入的HTTPS头,javascript,node.js,https,http-headers,response,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 + localSt

在下面这个例子中,在变量'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获取标题,这可能是什么问题

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

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

e、 g

//还可以尝试使用请求库

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

您可以在模块中获取标题

这就是如何获得响应的标题

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

希望这有帮助。

res.headers
将包含响应头。可能与我用您的解决方案尝试过的结果重复,但与Chrome浏览器相比,我只获得了4个参数,其中我看到了15个参数(包括JWT令牌)。还尝试了使用Postman的请求,并在响应头中获得了相同的11个参数。但是我需要得到一个适当的参数(JWT令牌),我无法使用https node.js lib获得这个参数。这是这个问题的答案。简而言之,问题出在SpringBoot2的后端。同样的解释。这也很好+1.你的答案如下:与原始问题上提供的解释相同,这显然是重复的。按照您的建议,确实如此,但在代码的答案中只有4个参数,而在浏览器中只有15个参数。在我的例子中,我需要所有的参数。你试过使用curl吗?e、 g.curl-vURL(curl-v)。令人惊讶的是,当从两个不同的来源调用相同的url时,我们得到的标题更少。你能给我们看看你在浏览器vs node.js中得到的标题吗?我使用Postman发送了请求,在响应标题中得到了相同的11个参数。但是我需要使用https node.js lib从代码中获得至少11个参数。谢谢您的回答。我尝试过你的解决方案,但与Chrome浏览器相比,我只得到了4个参数,其中我看到了15个参数(包括JWT令牌)。还尝试了使用Postman的请求,并在响应头中获得了相同的11个参数。但我需要获取一个使用https node.js lib无法获取的适当参数(JWT令牌)。您到底想从头中获取什么?我想使用https node.js lib从响应头中获取一个必要的参数(JWT令牌)。但我使用https node.js lib在响应头中得到了4个不必要的参数。当我使用Postman时,我会得到所有参数,包括必要的参数(JWT令牌)。如何使用https node.js lib获取所有参数或仅获取一个所需参数(JWT令牌)?JWT令牌在res头中的状态如何?它应该在请求头中,JWT令牌也在前端的请求头中。此外,在后端,JWT令牌被放在响应头中。
    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.
    });
});