如何使用Node获取网站的HTTP响应标头

时间:2019-07-10 19:30:09

标签: javascript node.js http-headers

我整天都在寻找这个。我想要的是使用Node JS获取给定网站的 http响应标题以及状态代码。这么简单。

对于这个简单的问题,我检查的所有答案和文档似乎都太过可怕,太复杂了,而且我似乎无法使它们正常工作。

例如,一个答案为我提供了此代码

const https = require('https')
const options = {
  hostname: 'google.com'
}

const req = https.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`)

  res.on('data', (d) => {
    process.stdout.write(d)
  })
})

req.on('error', (error) => {
  console.error(error)
})

req.end()

尝试使用google后,显示给我的响应代码是301,这显然是错误的

对于该示例,我认为正确的代码应为“ 200”。另外,这个不显示所有标题。

1 个答案:

答案 0 :(得分:1)

您可以看到,如果我使用google.com I get a 301, redirect enter image description here

这是因为google.com将我重定向到www.google.com。但是,如果我卷曲www.google.com,它会给我这个响应,

enter image description here

是网页。至于标头,应根据显示以下示例的https module documentation将其放在res.headers

const https = require('https');

https.get('https://encrypted.google.com/', (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });

}).on('error', (e) => {
  console.error(e);
});

如您所见,它们使用console.log('headers:', res.headers);打印标题。您可以使用res.headers['INSERT-HEADER-NAME-HERE']访问给定的标头,其中INSERT-HEADER-NAME-HERE被the header that you want to use取代