Javascript 使用node.js从Spring Boot 2响应读取传入的HTTPS头
在下面这个例子中,在变量'obj'中,我得到了响应体。如何使用此https node.js库获取响应的头值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
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.
});
});