2017-02-10 69 views
1

我正在使用superagent(儘管願意爲用戶其他節點lib),目標是單獨獲取重定向的url,但不是主體。後者是矯枉過正,我想阻止我的代碼下載身體,如果我可以幫助它。收到第一個字節後停止superagent(只獲取重定向url)

我不能使用HEAD請求,因爲這些不能保證在服務器上啓用。

相反,我的想法是管道superagent響應一個writeStream和停止接收第一個數據的writeStream。但是,.on('data', fn)僅適用於讀取流而不是寫入流。

相反,我試着看看superagent.get(...)本身是不是我可以聽.on('data', fn)殺死流的readstream,但似乎也不是這種情況。

總之,有沒有另一種方式提前取消請求,同時仍然獲得重定向url,但不會導致整個機構的下載開銷?

回答

0

解決:需要buffer(false)。使用該響應可被視爲適當的讀取流。

  const url = "http://www.google.com"; 
      superagent.get(url) 
      .buffer(false) 
      .end(function (err, res) { 
       const urlRedirect = res.redirects.length ? res.redirects.pop() : url; 
       res.destroy(); 
       res.on("end", function() { 
       //do stuff with 'urlRedirect' 
       }) 
      })