2016-11-18 4 views
0

I Service am statische Dateien an den Client auf Anfrage über:Express - Client-IP-Zugriff, wenn Index.HTML wird gefordert

app.use(express.static('public')); 

Ich möchte die IP-Adresse des Clients auf Anfrage von index.html zuzugreifen (Das ist im öffentlichen Ordner). Ist es möglich, dies zu tun, indem Sie die express.static Methode anpassen? Wenn das so ist, wie? Wenn nicht, was ist der beste Weg, dies zu tun?

Bearbeiten: Ich muss dies als Fallback für den Fall, HTML5 Geolocation API ist nicht erlaubt/unterstützt vom Client. Die IP-Adresse wird an 1 API gesendet, von der die Längen- und Breitenposition empfangen wird. Anschließend werden Länge und Breite an eine zweite API gesendet, um die Daten zu empfangen, die für die von mir erstellte App erforderlich sind. Diese Daten werden dann an den Client geliefert.

+0

Mögliches Duplikat von [Wie nur mit Hilfe von JavaScript-Client der IP-Adresse bekommen?] (Http://stackoverflow.com/questions/391979/how-to-get-clients-ip-address-using-javascript- nur) – jmargolisvt

+0

@jmargolisvt Definitiv kein Duplikat. Ich benötige die IP-Adresse des Clients, der die Datei index.html anfordert, um eine Anfrage an eine API eines Drittanbieters zu stellen und die Antwortdaten dieser API zusammen mit der Datei index.html zu liefern. Die IP-Adresse wird für die Geolocation benötigt, die an die API weitergegeben wird. Dies ist ein Fallback für den Fall, dass die html5-Geolocation-API vom Client nicht erlaubt ist. –

+0

@Ignat Wenn Sie sagen, dass Sie die IP-Adresse oder den Speicherort auf der Seite index.html einfügen möchten, wird an dieser Stelle keine statische Seite bereitgestellt. Sie benötigen eine Vorlage, die einen Platzhalter für den Speicherort dieser Informationen enthält. – Ryan

Antwort

1

Sie req.ip können die Remote-IP-Adresse erhalten:

req.ip 
// => "127.0.0.1" 

Aus der Dokumentation: http://expressjs.com/en/api.html#req.ip

Nur eine Middleware erstellen, der die Anforderung vor der statischen Route verarbeitet und next() auf den Anruf Ende.

app.use(function (req, res, next) { 
    console.log(req.ip); 
    next(); 
}); 

app.use(express.static('public')); 
+0

Ja, das ist in der Tat der Weg, um auf die IP-Adresse zuzugreifen. Das Problem ist, dass Sie auf es zugreifen, wenn Sie nur die 'app.use (express.static ('public')) haben;'? –

+0

Siehe aktualisierte Antwort. – kevintechie

Verwandte Themen