“请求”是否遵循元刷新标签的重定向?

kan*_*ane 1 redirect request node.js

在我的nodejs程序中,我使用require(request)。它似乎没有遵循重定向,即使它应该是默认的。我什至明确设置了重定向标志(尽管这应该是默认设置的)

var options = {
    url:url
  , followRedirect: true
  , headers: { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36'
  }
}
request(options, function (err, res, body) {...
Run Code Online (Sandbox Code Playgroud)

例如,查看网站http://www.fanniemae.com/ ,它会重定向到http://www.fanniemae.com/portal/index.html

在 /index.html 内,该 html 包含此内容

<meta http-equiv="REFRESH" content="0;url=/portal/index.html">
Run Code Online (Sandbox Code Playgroud)

请求似乎没有遵循此元标记重定向。

这是正常的吗?我怎样才能让它遵循这个重定向?

ole*_*hko 5

Request不会像浏览器那样呈现页面,它只是进行简单 http 调用的一种方式(如果外部服务上存在服务器端重定向,则重定向将起作用)。这就是为什么它无法理解这种重定向。

作为解决方案,您可以尝试使用类似PhantomJShttp://phantomjs.org/)的内容来使其与此处提到的一些解决方法一起使用。或者为Selenium服务器编写的脚本可能会帮助您解决问题。