Skip to content

Instantly share code, notes, and snippets.

@igorjs
Forked from qiao/ip.js
Created June 6, 2019 05:46
Show Gist options
  • Save igorjs/1903ef8579e704da4a0154bc073ad6d3 to your computer and use it in GitHub Desktop.
Save igorjs/1903ef8579e704da4a0154bc073ad6d3 to your computer and use it in GitHub Desktop.
Node.js get client IP address
// snippet taken from http://catapulty.tumblr.com/post/8303749793/heroku-and-node-js-how-to-get-the-client-ip-address
function getClientIp(req) {
var ipAddress;
// The request may be forwarded from local web server.
var forwardedIpsStr = req.header('x-forwarded-for');
if (forwardedIpsStr) {
// 'x-forwarded-for' header may return multiple IP addresses in
// the format: "client IP, proxy 1 IP, proxy 2 IP" so take the
// the first one
var forwardedIps = forwardedIpsStr.split(',');
ipAddress = forwardedIps[0];
}
if (!ipAddress) {
// If request was not forwarded
ipAddress = req.connection.remoteAddress;
}
return ipAddress;
};
@igorjs
Copy link
Author

igorjs commented Jun 6, 2019

var getClientIp = function(req) {
    return (req.headers["X-Forwarded-For"] ||
            req.headers["x-forwarded-for"] ||
            '').split(',')[0] ||
           req.client.remoteAddress;
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment