2016-04-15 90 views
1

我使用Node shell内的节点request模块通过HTTP POST提交登录表单。如果登录成功,则服务器重定向到“主页”页面(使用HTTP GET)。节点“请求”模块:获取302重定向中的最后一个响应

request的文件说,任何和所有重定向默认情况下发生的,这的确是发生 - 我可以看到在服务器端的重定向。

但是,在客户端,我需要能够获得发生在服务器端的最终重定向的(html)响应正文。 (在我的情况下,只有1重定向到主页,但它显然会超过1个重定向也是在一般的情况下)。

这里是我的客户端代码:

var request = require('request'); 
request.post('http://localhost:8080/login', { 
    form: { 
     user:'u', 
     password:'p' 
    }}, 
    function(err, resp, body) { 
     console.log(body); 
}); 

问题是:上面的代码不会在控制台上打印任何内容!

问题:如何打印最终响应?此外,在重定向链的情况下,是否有可能在客户端获得至少中间重定向的一些信息 - 例如,至少它们的URL,但理想情况下它们的URL以及它们的HTTP方法类型,请求查询参数,并请求机构?

没有什么是错的服务器上,这是因为:如果我使用curl针对服务器,我看到的最后主页的HTML就好了:

$ curl -L -d 'user=u' -d 'password=p' http://localhost:8080/login 
<html> ... </html> 
$ 

回答

0
var request = require('request').defaults({ 
    followRedirect: true, 
    followAllRedirects: true 
}); 

request.post('http://localhost:8080/login', { 
    form: { 
     user:'u', 
     password:'p' 
    }}, 
    function(err, resp, body) { 
     console.log(body); 
}); 

尝试的是,所不同的是两个选项。 followRedirect应该默认为true。另外,看看实际返回的是什么,我有类似的问题,直到我意识到重定向发生在HTML而不是来自服务器。