Ich möchte eine Seite im Knoten öffnen und den Inhalt in meiner Anwendung verarbeiten. So etwas scheint gut zu funktionieren:
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
});
Dies funktioniert jedoch nicht, wenn die Seite eine 301/302-Umleitung zurückgibt. Wie würde ich das auf wiederverwendbare Weise tun, wenn es mehrere Weiterleitungen gibt? Befindet sich über dem http ein Wrapper-Modul, mit dem die Verarbeitung von http-Antworten aus einer Knotenanwendung einfacher verarbeitet werden kann?
node.js
http-redirect
Zach
quelle
quelle
http.request
die API ist ziemlich einfach.http
Moduls folgt keinen Umleitungen, daher ist dies nicht Teil des integriertenhttp
Moduls.request
wurde veraltet.Wenn Sie nur Weiterleitungen folgen möchten, aber dennoch die integrierten HTTP- und HTTPS-Module verwenden möchten, empfehlen wir Ihnen, https://github.com/follow-redirects/follow-redirects zu verwenden .
Alles was Sie tun müssen, ist zu ersetzen:
mit
... und alle Ihre Anfragen folgen automatisch Weiterleitungen.
Mit TypeScript können Sie die Typen auch installieren
und dann verwenden
Offenlegung: Ich habe dieses Modul geschrieben.
quelle
request
die Ihrem Modul für eine so einfache Aufgabe mehr als 20 neue Abhängigkeiten hinzufügen würde. Vielen Dank, dass Sie die npm-Module leicht halten, Oliver! :)Aktualisieren:
Jetzt können Sie alle Weiterleitungen mit
var request = require('request');
demfollowAllRedirects
Parameter verfolgen.quelle
http
aber dann verwenden Sie eine Funktion namensrequest
request
wurde veraltetStellen Sie eine weitere Anfrage basierend auf
response.headers.location
:quelle
response.headers.location
Hier ist die Funktion, mit der ich die URL abrufe, die umgeleitet wird:
Es funktioniert genauso wie http.get, folgt jedoch der Umleitung.
quelle
Im Falle einer PUT- oder POST-Anfrage. Wenn Sie den Statuscode 405 erhalten oder eine Methode nicht zulässig ist. Versuchen Sie diese Implementierung mit der Bibliothek " request " und fügen Sie die genannten Eigenschaften hinzu.
followAllRedirects: true,
followOriginalHttpMethod: true
quelle
Wenn Sie einen
https
Server haben, ändern Sie Ihre URL, um dashttps://
Protokoll zu verwenden .Ich bin mit diesem in ein ähnliches Problem geraten. Meine URL hat ein
http://
Protokoll und ich möchte einePOST
Anfrage stellen, aber der Server möchte sie umleitenhttps
. Was passiert ist, dass sich herausstellt, dass das Knoten-HTTP-Verhalten die Umleitungsanforderung (weiter) in sendetGET
Methode , was nicht der Fall ist.Was ich getan habe, ist meine URL in
https://
Protokoll zu ändern und es funktioniert.quelle
Hier ist mein Ansatz zum Herunterladen von JSON mit einfachem Knoten, keine Pakete erforderlich.
quelle
Möglicherweise ein kleiner Nekromantie-Beitrag hier, aber ...
Hier ist eine Funktion, die bis zu 10 Weiterleitungen folgt und unendliche Umleitungsschleifen erkennt. analysiert auch das Ergebnis in JSON
Hinweis - Verwendet einen Rückruf-Helfer (am Ende dieses Beitrags gezeigt).
(TLDR; voll funktionsfähige Demo im Kontext hier oder Remix-Version hier )
Hinweis - Verwendet einen Rückruf-Helfer (siehe unten).
Sie können dies in die Knotenkonsole einfügen und es sollte so wie es ist ausgeführt werden.
(oder für eine voll funktionsfähige Demo im Kontext siehe hier )
quelle