如何使用 Request 和 NodeJS 到达重定向页面

How to get to the redirected page using Request and NodeJS

我正在使用Request、Jsdom 和NodeJS 登录网页。根据Request api

followRedirect - 按照 HTTP 3xx 响应作为重定向(默认值:true)。 属性 也可以实现为将响应对象作为单个参数获取的函数,如果重定向应该继续,则应该 return 为真,否则为假。

鉴于这默认为 true,我认为该请求会给我重定向页面,而不是中间的重定向页面。

我的代码:

    request(loginPageURL, function(error, response, body) {
    /*Error handling removed for brevity*/
        jsdom.env({
            html: body,
            scripts: [
                'http://code.jquery.com/jquery-1.7.1.min.js'
            ],
            done: function(err, window) {
                //Set login fields  
                var form = $('#authorizationForm');
                var data = form.serialize();
                var url = form.attr('action') || 'get';
                var type = form.attr('enctype') || 'application/x-www-form-urlencoded';
                var method = form.attr('method');

                request({
                    url: url,
                    method: method.toUpperCase(),
                    body: data,
                    headers: {
                        'Content-type': type
                    }
                }, function(error, response, body) {
                    if (!error) {
                        console.log("Response.statusCode:" + response.statusCode);
                        console.log("Body:" + body);

登录后没有给我主页,输出是:

Response.statusCode: 302
Body: To access this site, go to <a href="...">

虽然从重定向页面获取代码可能很有用,但如何跳转到它重定向到的页面?

是否是非GET请求?然后你需要显式设置 followAllRedirects: true.

followAllRedirects - follow non-GET HTTP 3xx responses as redirects (default: false)

https://github.com/request/request

followRedirect 的文档令人困惑,因为它们似乎并未表明 followRedirect 仅适用于 GET。)