Get only IPv4 ips via NodeJS express

Avi L picture Avi L · Jun 14, 2018 · Viewed 9.5k times · Source

I have a NodeJS express service running on Centos and listens to GET requests and I need to identify the IP of the user.

Currently, I'm using this script

ip = req.headers['x-forwarded-for'] ||
      req.connection.remoteAddress ||
      req.socket.remoteAddress ||
      req.connection.socket.remoteAddress

The problem is that sometimes the IP returned is IPv4 and sometimes it is IPv6. Is there a way to get only IPv4 IPs?

Answer

feiiiiii picture feiiiiii · Jun 20, 2018

Update

Base on Micheal's comment, if client is connected via ipv6 there will not be an ipv4 address, so you must be ready to accept ipv6.

specify ipv4 when you listen on the server see doc

.listen(port, '0.0.0.0');