如何在301重定向之前获取原始html代码使用superagent?

时间:2018-01-27 10:24:15

标签: node.js superagent

这是网站http://sf.gg,在打开网站时,它会被重定向到网站https://segmentfault.com

使用curl我可以获得http://sf.gg的html代码:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>

我想知道如何使用节点模块superagent

我看到Following redirects,但我不知道如何使用它,或者它是使用它的正确方法?

1 个答案:

答案 0 :(得分:2)

SuperAgent 默认将3xx响应视为https://stackoverflow.com/a/2081708/6735980。 因此,您必须在重定向发生之前处理错误以获取页面内容。我们可以强制 SuperAgent 不跟随.redirects(0)的重定向并打印响应:

const superagent = require('superagent') 

superagent
  .get('http://sf.gg')
  .redirects(0)
  .on('error', err => {
    console.log(err.response.text)
  })
  .end()

或者您可以使用.ok()更准确地对响应采取行动:

superagent
  .get('http://sf.gg')
  .redirects(0)
  .ok(res => {
    if (res.status === 301)
      console.log(res.text)
  })
  .end()