我使用superagent(虽然愿意使用其他节点lib)的目标是仅获取重定向的网址,而不是正文。后者是矫枉过正,如果我可以帮助我,我想阻止我的代码下载正文。
我无法使用HEAD
请求,因为无法保证在服务器上启用这些请求。
相反,我的想法是将superagent响应传递给writeStream并在接收第一个数据时停止writeStream。但是,.on('data', fn)
仅适用于读取流而非写入流。
相反,我试着看看superagent.get(...)
本身是否是一个读取流,我可以在其上监听.on('data', fn)
来杀死流,但事实并非如此。
简而言之,还有另一种方法可以提前取消请求,同时仍然获得重定向网址,但不会产生整个机构的下载开销吗?
答案 0 :(得分: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'
})
})