479 votes

Comment puis-je obtenir l'adresse IP de l'utilisateur en utilisant Node.js ?

J'ai un site dans node et j'ai une post sur app.post "/", mycontroller.example et dans ce contrôleur, j'aimerais obtenir l'adresse IP de l'utilisateur qui a envoyé la requête. J'essaie de construire une API.

Toute aide serait grandement appréciée.

Merci

41 votes

Si vous utilisez Express, vous pouvez utiliser req.ip source - expressjs.com/fr/api.html#req.ip

0 votes

51 votes

Pour ceux qui travaillent à partir de localhost - comme je l'ai fait, le résultat pour toutes les réponses ci-dessous (presque toutes les réponses fonctionnent) pourrait venir ::1 . Cela m'a rendu confus pendant un certain temps. J'ai découvert plus tard que ::1 est l'adresse IP réelle et est IPV6 pour localhost. Hope this helps someone

8voto

Ahmad Agbaryah Points 119
function getCallerIP(request) {
    var ip = request.headers['x-forwarded-for'] ||
        request.connection.remoteAddress ||
        request.socket.remoteAddress ||
        request.connection.socket.remoteAddress;
    ip = ip.split(',')[0];
    ip = ip.split(':').slice(-1); //in case the ip returned in a format: "::ffff:146.xxx.xxx.xxx"
    return ip;
}

7voto

Alexandru Points 71

Dans le nœud 10.14, derrière nginx, vous pouvez récupérer l'ip en le demandant à travers l'en-tête nginx comme ceci :

proxy_set_header X-Real-IP $remote_addr;

Puis dans votre app.js :

app.set('trust proxy', true);

Après cela, où vous voulez qu'il apparaisse :

var userIp = req.header('X-Real-IP') || req.connection.remoteAddress;

6voto

Michael Lang Points 785

Si vous utilisez la version 3.x ou supérieure d'express, vous pouvez utiliser le paramètre de proxy de confiance ( http://expressjs.com/api.html#trust.proxy.options.table ) et il va parcourir la chaîne d'adresses dans l'en-tête x-forwarded-for et mettre la dernière ip de la chaîne que vous n'avez pas configurée comme proxy de confiance dans la propriété ip de l'objet req.

5voto

Rahul Mane Points 11

Si vous utilisez express.js alors,

app.post('/get/ip/address', function (req, res) {
      res.send(req.ip);
})

5voto

Mian Mudassar Points 11
var ipaddress = (req.headers['x-forwarded-for'] || 
req.connection.remoteAddress || 
req.socket.remoteAddress || 
req.connection.socket.remoteAddress).split(",")[0];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X