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

2voto

Cris Points 239

J'utilise ceci pour le format ipv4

req.connection.remoteAddress.split(':').slice(-1)[0]

1voto

Arsham Gh Points 11

Si vous utilisez Graphql-Yoga, vous pouvez utiliser la fonction suivante :

const getRequestIpAddress = (request) => {
    const requestIpAddress = request.request.headers['X-Forwarded-For'] || request.request.connection.remoteAddress
    if (!requestIpAddress) return null

    const ipv4 = new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")

    const [ipAddress] = requestIpAddress.match(ipv4)

    return ipAddress
}

1voto

Matan Livne Points 65

J'utilise express derrière nginx et

req.headers.origin

a fait l'affaire pour moi

0voto

    const express = require('express')
    const app = express()
    const port = 3000

    app.get('/', (req, res) => {
    var ip = req.ip
    console.log(ip);
    res.send('Hello World!')
    })

   // Run as nodejs ip.js
    app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
    })

0voto

Theo Itzaris Points 2386

Chaque req y res qui sont fournis à la fonction d'écoute des requêtes, ils ont un objet prise de courant propriété. Ainsi, req.socket.remoteAddress contient l'adresse IP du client qui fait la demande.(express)

J'ajouterai aussi mon chemin pour toute personne intéressée.

J'obtiens l'adresse distante : `

 app.use(function(req, res, next) {
  const rAddress = req.socket.remoteAddress;  
   ....
   } 

Et voici l'adresse distante à partir de laquelle j'ai appelé le service : ::ffff:127.0.0.1

Afin d'obtenir seulement le IP je coupe la chaîne comme ça : req.socket.remoteAddress.slice(7))

Basé sur la doc. Mozilla, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice j'obtiens une nouvelle chaîne qui commence à partir du numéro d'index 7 jusqu'à la fin de la chaîne.

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