428 Stimmen

Express.js: Wie erhalte ich die Adresse eines entfernten Clients?

Ich verstehe nicht ganz, wie ich die IP-Adresse eines entfernten Benutzers erhalten soll.

Nehmen wir an, ich habe eine einfache Anfrage wie die folgende:

app.get(/, function (req, res){
   var forwardedIpsStr = req.header('x-forwarded-for');
   var IP = '';

   if (forwardedIpsStr) {
      IP = forwardedIps = forwardedIpsStr.split(',')[0];  
   }
});

Ist der oben beschriebene Ansatz richtig, um die echte IP-Adresse des Benutzers zu ermitteln, oder gibt es einen besseren Weg? Und was ist mit Proxys?

4voto

abbr Punkte 5000

Según Express hinter Proxys , req.ip hat den Reverse Proxy berücksichtigt, wenn Sie die folgenden Einstellungen vorgenommen haben trust proxy richtig. Deshalb ist es besser als req.connection.remoteAddress die von der Netzschicht bezogen wird und die der Proxy nicht kennt.

2voto

ile Punkte 1735

Das hat bei mir besser funktioniert als die anderen. Meine Websites sind hinter CloudFlare und es schien zu erfordern cf-connecting-ip .

req.headers['cf-connecting-ip'] || req.headers['x-forwarded-for'] || req.connection.remoteAddress

Wurde nicht getestet Express hinter Proxys da sie nichts darüber aussagt cf-connecting-ip Kopfzeile.

2voto

Bhulawat Ajay Punkte 267

Var ip = req.connection.remoteAddress;

ip = ip.split(':')[3];

2voto

Juan David Arce Punkte 537

Das Header-Objekt enthält alles, was Sie brauchen, Sie müssen nur dies tun:

var ip = req.headers['x-forwarded-for'].split(',')[0];

1voto

kakopappa Punkte 4925

Mit could-flare, nginx und x-real-ip Unterstützung

var user_ip;

    if(req.headers['cf-connecting-ip'] && req.headers['cf-connecting-ip'].split(', ').length) {
      let first = req.headers['cf-connecting-ip'].split(', ');
      user_ip = first[0];
    } else {
      let user_ip = req.headers['x-forwarded-for'] || req.headers['x-real-ip'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X