你如何遵循Node.js中的HTTPredirect?

我想在节点中打开一个页面并处理我的应用程序中的内容。 像这样的东西似乎运作良好:

var opts = {host: host, path:pathname, port: 80}; http.get(opts, function(res) { var page = ''; res.on('data', function (chunk) { page += chunk; }); res.on('end', function() { // process page }); 

但是,这不起作用,如果页面返回301/302redirect。 如果有多个redirect,我该如何以可重用的方式来做到这一点? 在http的顶部是否有一个包装模块,可以更轻松地处理来自节点应用程序的http响应处理?

在http的顶部是否有一个包装模块,可以更轻松地处理来自节点应用程序的http响应处理?

request

请求中的redirect逻辑

如果你想要做的是遵循redirect,但仍然想使用内置的HTTP和HTTPS模块,我build议你使用https://github.com/olalonde/follow-redirects

所有你需要做的是取代:

 var http = require('http'); 

通过

 var http = require('follow-redirects').http; 

…所有的请求将自动遵循redirect。

披露:我写了这个模块。

更新:

现在你可以跟随所有redirectvar request = require('request'); 使用followAllRedirects参数。

 request({ followAllRedirects: true, url: url }, function (error, response, body) { if (!error) { console.log(response); } }); 

根据response.headers.location另一个请求:

  const request = function(url) { lib.get(url, (response) => { var body = []; if (response.statusCode == 302) { body = []; request(response.headers.location); } else { response.on("data", /*...*/); response.on("end", /*...*/); }; } ).on("error", /*...*/); }; request(url); 

如果您有https服务器,请将您的url更改为使用https://协议。

我遇到了这个类似的问题。 我的url有http://协议,我想发一个POST请求,但是服务器想把它redirect到https 。 发生的是,事实certificate是节点http行为在GET方法中发送redirect请求(next)而不是这种情况。

我所做的是将我的url更改为https://协议,它的工作原理。