Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

request-ip

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

request-ip

A small Node.js module to retrieve the request's IP address

latest
Source
npmnpm
Version
3.3.0
Version published
Weekly downloads
2.5M
2.95%
Maintainers
1
Weekly downloads
 
Created
Source

request-ip

A tiny Node.js module for retrieving a request's IP address.

Coverage Status npm version

Installation

Yarn

yarn add request-ip

npm

npm install request-ip --save

Getting Started

const requestIp = require('request-ip');

// inside middleware handler
const ipMiddleware = function(req, res, next) {
    const clientIp = requestIp.getClientIp(req); 
    next();
};

// on localhost you'll see 127.0.0.1 if you're using IPv4 
// or ::1, ::ffff:127.0.0.1 if you're using IPv6

As Connect Middleware

const requestIp = require('request-ip');
app.use(requestIp.mw())

app.use(function(req, res) {
    const ip = req.clientIp;
    res.end(ip);
});

To see a full working code for the middleware, check out the examples folder.

The connect-middleware also supports retrieving the ip address under a custom attribute name, which also works as a container for any future settings.

How It Works

It looks for specific headers in the request and falls back to some defaults if they do not exist.

The user ip is determined by the following order:

  • X-Client-IP
  • X-Forwarded-For (Header may return multiple IP addresses in the format: "client IP, proxy 1 IP, proxy 2 IP", so we take the first one.)
  • CF-Connecting-IP (Cloudflare)
  • Fastly-Client-Ip (Fastly CDN and Firebase hosting header when forwared to a cloud function)
  • True-Client-Ip (Akamai and Cloudflare)
  • X-Real-IP (Nginx proxy/FastCGI)
  • X-Cluster-Client-IP (Rackspace LB, Riverbed Stingray)
  • X-Forwarded, Forwarded-For and Forwarded (Variations of #2)
  • appengine-user-ip (Google App Engine)
  • req.connection.remoteAddress
  • req.socket.remoteAddress
  • req.connection.socket.remoteAddress
  • req.info.remoteAddress
  • Cf-Pseudo-IPv4 (Cloudflare fallback)
  • request.raw (Fastify)

If an IP address cannot be found, it will return null.

Samples Use Cases

  • Getting a user's IP for geolocation.

Running the Tests

Make sure you have the necessary dev dependencies needed to run the tests:

npm install

Run the integration tests

npm test

Building

Compiles the current ES6 code to ES5 using Babel.

npm build

Release Notes

See the wonderful changelog

To generate a new changelog, install github-changelog-generator then run npm run changelog. This will require being on Ruby >= 3

Contributors

Thank you to all the contributors!

License

The MIT License (MIT) - 2022

Keywords

request ip

FAQs

Package last updated on 07 Jul 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts