var fsHeaders = fs.createWriteStream('headers.html', 'utf-8');
var getHeaders = request('http://google.com', {method: 'HEAD'}, function (error, response, body)
{
if (error || response.statusCode !== 200)
{
return res.redirect('/');
}
if (!error && response.statusCode == 200)
{
var tester = response.body;
console.log(tester + 'response.body is EMPTY... so the headers are stored not in the "body"... \n');
var targetHeaders = response.headers;
body = body + JSON.stringify(targetHeaders);
console.log(body + 'OK! \n');
}
}).pipe(fsHeaders);
但是我的 headers.html 是空的...如何正确地将response.headers保存到文件?我以后可以修改 header 并将其发送给用户吗?没有问题,还是受到某种限制?我想从服务器获取数据,通过 Node 修改它,然后发送给用户。
最佳答案
无论您使用的是 request 还是 http 模块,都没有关系。当您仅使用 {method: 'HEAD'} 请求 header 时,方法正文为空,但 header 驻留在响应流中。我猜你的问题是需要标题并将其显示为 [object object]。在这种情况下,您需要将对象更改为字符串 - 只需使用 console.log 显示它或将其通过管道传输到文件。
var targetHeaders = objectToString(resp.headers, targetHeaders);
function objectToString(object, outputString)
{
var outputString = '';
for (var i in object)
{
if (object.hasOwnProperty(i))
{
outputString += i + ': ' + object[i] + ' \n';
}
}
return outputString;
}
now console.log(targetheaders); // OK! no [object Object] anymore :)
您稍后可以毫无问题地传递这些 header 。
关于node.js - 我无法通过将 http-headers 通过管道传输到 node.js 中来将其保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385006/