在收到第一个字节后停止superagent(仅获取重定向url)
我使用superagent(尽管愿意使用其他节点库),目标是单独获取重定向的url,但不是body。 后者是矫枉过正,我想阻止我的代码下载身体,如果我可以帮助它。
我无法使用HEAD
请求,因为这些不能保证在服务器上启用。
相反,我的想法是将superagent响应传递给writeStream,并在接收到第一个数据时停止writeStream。 但是, .on('data', fn)
仅在读取流而不是写入流中可用。
相反,我试图查看superagent.get(...)
本身是否是一个readstream,我可以通过它来监听.on('data', fn)
来杀死这个流,但这似乎也不是这样。
简而言之,是否有另一种方式可以尽早取消请求,同时仍然获得重定向url,但不会导致整个机构的下载开销?
解决:需要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'
})
})
链接地址: http://www.djcxy.com/p/96723.html
上一篇: stop superagent after receiving first byte (to only get redirect url)