遵循node.js请求的重定向

kaz*_*aze 11 javascript http request node.js

我正在尝试学习node.js,我正在研究一个实用程序来登录一个站点,然后提取一些信息.我已经读过重定向应该在文档中"自动工作",但是我无法让它工作.

request({
    url: start_url,
    method: 'POST',
    jar: true,
    form: {
        action: 'login',
        usertype: '2',
        ssusername: '****',
        sspassword: '****',
        button: 'Logga in'
    }
}, function(error, response, body) {
    if (error) {
        console.log(error);
    } else {
        console.log(body, response.statusCode);
        request(response.headers['location'], function(error, response, html) {
            console.log(html);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

首先,我做一个POST,它给出了一个respone.statusCode == 302.正文是空的.我希望正文包含重定向的页面.

然后我在response.headers ['location']找到了"新"网址.使用它时,正文只包含一个"未登录"页面,而不是我期望的页面.

有谁知道如何去做?

Bra*_*ith 25

默认情况下,仅对GET请求启用重定向.要在POST中关注重定向,请将以下内容添加到配置中:

followAllRedirects: true
Run Code Online (Sandbox Code Playgroud)

更新的代码:

request({
    url: start_url,
    method: 'POST',
    followAllRedirects: true,
    jar: true,
    form: {
        action: 'login',
        usertype: '2',
        ssusername: '****',
        sspassword: '****',
        button: 'Logga in'
    }
}, function(error, response, body) {
    if (error) {
        console.log(error);
    } else {
        console.log(body, response.statusCode);
        request(response.headers['location'], function(error, response, html) {
            console.log(html);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)