/*! * forwarded * Copyright(c) 2014 Douglas Christopher Wilson * MIT Licensed */ /** * Module exports. */ module.exports = forwarded /** * Get all addresses in the request, using the `X-Forwarded-For` header. * * @param {Object} req * @api public */ function forwarded(req) { if (!req) { throw new TypeError('argument req is required') } // simple header parsing var proxyAddrs = (req.headers['x-forwarded-for'] || '') .split(/ *, */) .filter(Boolean) .reverse() var socketAddr = req.connection.remoteAddress var addrs = [socketAddr].concat(proxyAddrs) // return all addresses return addrs }