Die Frage ist ziemlich einfach. Ich möchte einen Node.js-Server als Proxy verwenden, um HTTP-Abfragen zu protokollieren, zu authentifizieren und an einen Back-End-HTTP-Server weiterzuleiten (PUT-, GET- und DELETE-Anforderungen).
Welche Bibliothek soll ich für diesen Zweck verwenden? Ich fürchte, ich kann keinen finden.
resp.setEncoding('utf8');
, Daten (oder die von Ihnen verwendete Codierung) hinzuzufügen , um Daten als utf8-Zeichenfolgen abzurufen. Wenn ich es richtig verstanden habe, erhalten Sie sonst Pufferobjekte und haben möglicherweise Probleme mit Mehrbytezeichen, wenn ein Mehrbytezeichen in zwei Teile aufgeteilt wird. (Nur ein verwandtes Problem für eine Weile debuggt)request
viel mehr mit dem npm-Modul angefangen .Ich würde Node-http-Proxy und Express kombinieren .
node-http-proxy unterstützt einen Proxy innerhalb Ihres node.js-Webservers über
RoutingProxy
(siehe das Beispiel Proxy-Anforderungen auf einem anderen http-Server ).Innerhalb Ihrer benutzerdefinierten Serverlogik können Sie die Authentifizierung mit Express durchführen. Ein Beispiel finden Sie hier im Auth-Beispiel .
Die Kombination dieser beiden Beispiele sollte Ihnen das geben, was Sie wollen.
quelle
Sie können das eingebaute
http
Modul verwenden, um einehttp.request()
.Wenn Sie jedoch die API vereinfachen möchten, können Sie ein Modul wie Superagent verwenden
quelle
Node-http-Proxy ist eine großartige Lösung, wie oben von @hross vorgeschlagen. Wenn Sie bei der Verwendung von Node nicht festgefahren sind, verwenden wir NGINX , um dasselbe zu tun. Es funktioniert sehr gut mit Knoten. Wir verwenden es beispielsweise, um SSL-Anforderungen zu verarbeiten, bevor sie an den Knoten weitergeleitet werden. Es kann auch Cache- und Weiterleitungsrouten verarbeiten. Yay!
quelle
Sie können dazu das http-Modul node.js verwenden. Sie können die Dokumentation unter Node.js HTTP überprüfen .
Sie müssten die Abfragezeichenfolge auch an den anderen HTTP-Server übergeben. Sie sollten das in ServerRequest.url haben .
Sobald Sie diese Informationen haben, können Sie den Back-End-HTTP-Server übergeben und die Optionen portieren, die Sie im Internet bereitstellen
http.request()
quelle