Je me rends compte que cette question a été traitée à mort, mais voici une version ES6 moderne que j'ai écrite et qui suit les normes eslint de la base airbnb.
const getIpAddressFromRequest = (request) => {
let ipAddr = request.connection.remoteAddress;
if (request.headers && request.headers['x-forwarded-for']) {
[ipAddr] = request.headers['x-forwarded-for'].split(',');
}
return ipAddr;
};
L'en-tête X-Forwarded-For peut contenir une liste d'adresses IP de proxy séparées par des virgules. L'ordre est client,proxy1,proxy2,...,proxyN. Dans le monde réel, les gens implémentent des proxys qui peuvent fournir ce qu'ils veulent dans cet en-tête. Si vous êtes derrière un équilibreur de charge ou autre, vous pouvez au moins être sûr que la première IP de la liste est au moins le proxy par lequel une requête est passée.
41 votes
Si vous utilisez Express, vous pouvez utiliser
req.ip
source - expressjs.com/fr/api.html#req.ip0 votes
Essayez ça : github.com/indutny/node-ip
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 estIPV6
pour localhost.Hope this helps someone