HI. in node.js, if it is http request, I can get the remoteAddress at req.connection.remoteAddress,
so, how to get it if https request? I find there is req.socket.remoteAddress but I'm not sure. Please advice. thanks.
HI. in node.js, if it is http request, I can get the remoteAddress at req.connection.remoteAddress,
so, how to get it if https request? I find there is req.socket.remoteAddress but I'm not sure. Please advice. thanks.
Note that sometimes you can get more than one ip address in req.headers['x-forwarded-for'], specially when working with mobile phones accessing your server (wifi and carrier data).
As well
req.headers['x-forwarded-for']
is easily manipulated so you need a properly configured proxy server.Is better to check req.connection.remoteAddress against a list of known proxy servers before to go with
req.headers['x-forwarded-for']
.It appears something is strange/broken indeed. As of node 0.4.7, it seems http has remoteAddress available on:
on https, both of these are undefined, but
does work. That one isn't available on http though, so you need to check carefully. I cannot imagine this behavior is intentional.
Since googling "express js ip" directly points to here, this is somehow relevant.
Express 3.0.0 alpha now offers a new way of retrieving IP adresses for client requests. Simply use
req.ip
. If you're doing some proxy jiggery-pokery you might be interested inapp.set("trust proxy", true);
andreq.ips
.I recommend you to read the whole discussion in the Express Google Group.