var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket ? req.connection.socket.remoteAddress : null);
Beachten Sie, dass Sie manchmal mehr als eine IP-Adresse erhalten können req.headers['x-forwarded-for']
. Außerdem x-forwarded-for
wird nicht immer ein Header gesetzt, der einen Fehler auslösen kann.
Das allgemeine Format des Feldes lautet:
x-weitergeleitet-für: client, proxy1, proxy2, proxy3
Dabei ist der Wert eine durch Kommas und Leerzeichen getrennte Liste von IP-Adressen, wobei der ursprüngliche Client ganz links steht und jeder nachfolgende Proxy, der die Anforderung übergeben hat, die IP-Adresse hinzufügt, von der er die Anforderung erhalten hat. In diesem Beispiel hat der Antrag durch proxy1
, proxy2
und dann proxy3
. proxy3
wird als Remote-Adresse der Anforderung angezeigt.
Dies ist die von Arnav Gupta vorgeschlagene Lösung mit einem Fix, den Martin unten in den Kommentaren für Fälle vorgeschlagen hat, in denen dies x-forwarded-for
nicht festgelegt ist:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ip
source - expressjs.com/en/api.html#req.ip