我在Node shell中使用Node request
模块通过HTTP POST提交登录表单。如果登录成功,服务器将重定向到“主页”(使用HTTP GET)。
var request = require('request');
request.post('http://localhost:8080/login', {
form: {
user:'u',
password:'p'
}},
function(err, resp, body) {
console.log(body);
});
的文档说默认情况下会发生任何和所有重定向,而 正在发生 - 我可以看到服务器端的重定向。
但是,在客户端,我需要能够获得服务器端发生的最终重定向的(html)响应主体。 (在我的情况下,主页只有一个重定向,但在一般情况下,它显然也可能超过1个重定向。)
这是我的客户端代码:
curl
问题是:上面的代码在控制台上什么都没打印!
问题:如何打印最终回复?此外,在一系列重定向的情况下,是否有可能在客户端获得至少中间重定向的一些信息 - 例如,至少他们的URL,但理想情况下他们的URL以及他们的HTTP方法类型,请求查询参数,并请求机构?
服务器上没有错,因为:如果我对服务器使用$ curl -L -d 'user=u' -d 'password=p' http://localhost:8080/login
<html> ... </html>
$
,我会看到最终主页的html:
{{1}}
答案 0 :(得分:1)
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而不是服务器上。