Ich versuche, eine URL zu verwenden, die mich mithilfe des Anforderungsmoduls von nodejs auf eine andere Seite weiterleitet .
Beim Durchsuchen der Dokumente konnte ich nichts finden, mit dem ich die URL nach der Umleitung abrufen könnte.
Mein Code lautet wie folgt:
var request = require("request"),
options = {
uri: 'http://www.someredirect.com/somepage.asp',
timeout: 2000,
followAllRedirects: true
};
request( options, function(error, response, body) {
console.log( response );
});
this
, weil wir vielleicht verwendenes6
.res.request.uri.href
stürzt ab, wenn die angegebene URL eine schlechte URL wie 'sdfdsfdgdfgdfgdfg.sdfsdfsdf' ist. Sie können also entweder prüfen, ob Sie diese Option verwenden möchtenerr
oderres
nicht.Um die Weiterleitungs-URL zu finden, versuchen Sie Folgendes:
var url = 'http://www.google.com'; request({ url: url, followRedirect: false }, function (err, res, body) { console.log(res.headers.location); });
quelle
res.headers.location
hat den Job für mich gemacht.request
Erhält standardmäßig Weiterleitungen, kann standardmäßig 10 Weiterleitungen durchlaufen. Sie können dies in den Dokumenten überprüfen . Der Nachteil dabei ist, dass Sie nicht wissen, ob es sich bei der erhaltenen URL um eine umgeleitete oder eine ursprüngliche URL handelt.Zum Beispiel:
request('http://www.google.com', function (error, response, body) { console.log(response.headers) console.log(body) // Print the google web page. })
gibt Ausgabe
> { date: 'Wed, 22 May 2013 15:11:58 GMT', expires: '-1', 'cache-control': 'private, max-age=0', 'content-type': 'text/html; charset=ISO-8859-1', server: 'gws', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN', 'transfer-encoding': 'chunked' }
aber wenn Sie Option
followRedirect
als falsch gebenrequest({url:'http://www.google.com',followRedirect :false}, function (error, response, body) { console.log(response.headers) console.log(body) });
es gibt
> { location: 'http://www.google.co.in/', 'cache-control': 'private', 'content-type': 'text/html; charset=UTF-8', date: 'Wed, 22 May 2013 15:12:27 GMT', server: 'gws', 'content-length': '221', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'SAMEORIGIN' } <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.co.in/">here</A>. </BODY></HTML>
Machen Sie sich also keine Sorgen um den umgeleiteten Inhalt. Wenn Sie jedoch wissen möchten, ob es umgeleitet wird oder nicht, setzen
followRedirect
Sie denlocation
Header in der Antwort.quelle
followRedirect
auffalse
"? Würde das nicht den Umleitungsprozess stoppen?Sie können das Funktionsformular für
followRedirect
(anstattfollowAllRedirects
) wie folgt verwenden:options.followRedirect = function(response) { var url = require('url'); var from = response.request.href; var to = url.resolve(response.headers.location, response.request.href); return true; }; request(options, function(error, response, body) { // normal code });
quelle