簡體   English   中英

如何使用Node獲取網站的HTTP響應標頭

[英]How to get a website's HTTP response headers with Node

我整天都在尋找這個。 我想要的是使用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”。 另外,這個不顯示所有標題。

您可以看到,如果我對google.com 進行了網址訪問,則會收到301,重定向 在此處輸入圖片說明

這是因為google.com將我重定向到www.google.com 但是,如果我cURL www.google.com ,它會給我這個響應,

在此處輸入圖片說明

這是網頁。 至於標題,根據https模塊文檔 (顯示以下示例),它們應位於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);打印標題console.log('headers:', res.headers); 您可以使用res.headers['INSERT-HEADER-NAME-HERE']訪問給定的標頭,其中INSERT-HEADER-NAME-HERE被替換為您要使用的標頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM