请求nodejs模块不支持重定向某个url

时间:2015-05-29 12:01:47

标签: javascript node.js redirect request npm

我正在使用请求nodejs模块获取网站的html,但不适用于某个重定向网站,如下所示:

var request = require('request');

var options = {
    url: "http://www.amwasia.com",
    headers: {'user-agent': 'node.js'},
    rejectUnauthorized: false,
    followAllRedirects: true
};

request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
       console.log("body>>>>>>"+body)
    } else {
        console.log("error>>>>>>>>>" + error);
        console.log("response statusCode>>>>>>>>>" + response.statusCode);
        console.log("response body>>>>>>>>>" + response.body);
    }
});

这给了我这个输出

体>>>>>>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.amwmotors.com/">
</head>

<body>
</body>
</html>

这不是准确的HTML。

此网站正在重定向到此页面http://www.amwmotors.com/

我的另一个例子是网站:http://www.pmat.or.th并重定向到页面http://www.pmat.or.th/main/

也没有给出正确的输出。

我也试过在选项中没有 followAllRedirects:true

请帮帮忙?

1 个答案:

答案 0 :(得分:1)

如果您可以将body var记录在:

if (!error && response.statusCode == 200) {
   console.log("body>>>>>>"+body)
}

,这是因为您收到的是200状态代码,而不是重定向。如果您通过浏览器测试了网址www.amwasia.com并被重定向,则通过html <meta>标记完成:

<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.amwmotors.com/">

通过请求模块,您似乎获得了200,而不是3xx