如何使用 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。)
我正在使用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。)