Holen Sie sich den Hostnamen der aktuellen Anfrage in node.js Express

Also, ich vermisse hier vielleicht etwas Einfaches, aber ich finde keinen Weg, den Hostnamen zu erhalten, von dem ein Anfrageobjekt angefordert wurde, an das ich eine Antwort sende.

Ist es möglich herauszufinden, welchen Hostnamen der Benutzer gerade von node.js besucht?

Wenn Sie über eine HTTP-Anfrage sprechen, können Sie den Anfrage-Host in folgendem Verzeichnis finden:

 request.headers.host 

Aber das hängt von einer eingehenden Anfrage ab.

Mehr unter http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest

Wenn Sie nach Maschinen- / nativen Informationen suchen, versuchen Sie das processobjekt.

Sie können das os-Modul verwenden:

 var os = require("os"); os.hostname(); 

Siehe http://nodejs.org/docs/latest/api/os.html#os_os_hostname

Vorbehalte:

  1. wenn Sie mit der IP-Adresse arbeiten können – Maschinen können mehrere Netzwerkkarten haben und wenn Sie es nicht spezifizieren, wird der Knoten auf alle von ihnen hören, so dass Sie nicht wissen, auf welcher NIC die Anfrage kam, bevor sie hereinkommt.

  2. Hostname ist eine DNS-Angelegenheit – Vergessen Sie nicht, dass mehrere DNS-Aliase auf denselben Computer verweisen können.

Wenn Sie einen vollqualifizierten Domänennamen benötigen und keine HTTP-Anforderung haben, können Sie unter Linux Folgendes verwenden:

 var child_process = require("child_process"); child_process.exec("hostname -f", function(err, stdout, stderr) { var hostname = stdout.trim(); }); 

Bevor ich eine Antwort gebe, möchte ich zunächst einmal darauf hinweisen, dass Sie durch das Vertrauen in Headers die Tür zu Sicherheitslücken wie Phishing öffnen. Verwenden Sie daher für Umleitungszwecke keine Werte aus Headern, ohne dass zuvor die URL validiert wurde.

Dann stimmt der Hostname Ihres Betriebssystems möglicherweise nicht mit dem DNS überein. Tatsächlich kann eine IP mehr als einen DNS-Namen haben. Für HTTP-Zwecke kann daher nicht garantiert werden, dass der Hostname, der Ihrem Computer in Ihrer Betriebssystemkonfiguration zugewiesen wurde, verwendet werden kann.

Die beste Wahl, die ich mir vorstellen kann, besteht darin, die öffentliche IP-Listener-IP zu erhalten und ihren Namen über DNS aufzulösen. Weitere dns.reverse Methode dns.reverse . Beachten Sie jedoch, dass eine IP-Adresse mehrere Namen haben kann.

Hier ist eine Alternative

 req.hostname 

Lesen Sie in den Express-Dokumenten nach .