Front-end Tutorials

Front-end Tutorials

HTMLCSSSassJavaScriptReactJS
CMS Tutorials

CMS Tutorials

WordPress
Tutorials expand

Express req.ip Property

Updated on Nov 24, 2024
By Mari Selvan
👁️ 112 - Views
⏳ 4 mins
💬 1 Comment
Express req.ip Property

Photo Credit to CodeToFun

🙋 Introduction

When building web applications with Express.js, it's often crucial to know the IP address of the client making a request.

The req.ip property in Express provides a straightforward way to access this information.

In this guide, we'll explore the syntax, usage, and practical examples of the req.ip property, helping you gain insights into the IP addresses of your clients.

💡 Syntax

Accessing the client's IP address using req.ip is as simple as:

syntax.js
Copied
Copy To Clipboard
const clientIP = req.ip;

❓ How req.ip Works

The req.ip property in Express.js retrieves the IP address of the client making the request. It considers various factors, including the X-Forwarded-For header, which may contain a comma-separated list of IP addresses representing the client and any intermediate proxies.

example.js
Copied
Copy To Clipboard
app.get('/client-ip', (req, res) => {
  const clientIP = req.ip;
  res.send(`Client IP Address: ${clientIP}`);
});

In this example, the /client-ip route handler uses req.ip to retrieve the client's IP address and sends it as a response.

📚 Use Cases

  1. Logging Client IP Addresses:

    Use req.ip to log client IP addresses for requests, aiding in debugging and monitoring.

    example.js
    Copied
    Copy To Clipboard
    app.use((req, res, next) => {
      const clientIP = req.ip;
      console.log(`Request from IP: ${clientIP}`);
      next();
    });
  2. IP-Based Authentication:

    Leverage req.ip for IP-based authentication, allowing or denying access based on client IP addresses.

    example.js
    Copied
    Copy To Clipboard
    app.use('/admin', (req, res, next) => {
      const allowedIPs = ['192.168.1.1', '10.0.0.1'];
      const clientIP = req.ip;
    
      if (allowedIPs.includes(clientIP)) {
        // Allow access to admin routes
        next();
      } else {
        res.status(403).send('Forbidden: Access denied from your IP address.');
      }
    });

🏆 Best Practices

  1. Trust Proxy Setting:

    When using a reverse proxy, set the trust proxy setting to instruct Express to trust the X-Forwarded-For header and correctly determine the client's IP address.

    example.js
    Copied
    Copy To Clipboard
    // Enable trust for the X-Forwarded-For header
    app.set('trust proxy', true);
  2. Handle Multiple IP Addresses:

    Be aware that req.ip may return a comma-separated list of IP addresses when there are multiple proxies involved. Consider extracting the primary client IP if needed.

    example.js
    Copied
    Copy To Clipboard
    // Extract the primary IP address from the X-Forwarded-For header
    const clientIP = req.ip.split(',')[0];

🎉 Conclusion

Understanding and utilizing the req.ip property in Express.js allows you to gain insights into the IP addresses of clients making requests to your server. Whether for logging, authentication, or other use cases, req.ip proves to be a valuable tool in your Express.js toolkit.

Now, equipped with knowledge about req.ip, go ahead and enhance your Express.js projects with accurate client IP address handling!

👨‍💻 Join our Community:

To get interesting news and instant updates on Front-End, Back-End, CMS and other Frameworks. Please Join the Telegram Channel:

Author

author
👋 Hey, I'm Mari Selvan

For over eight years, I worked as a full-stack web developer. Now, I have chosen my profession as a full-time blogger at codetofun.com.

Buy me a coffee to make codetofun.com free for everyone.

Buy me a Coffee

Share Your Findings to All

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mari Selvan
Mari Selvan
10 months ago

If you have any doubts regarding this article (Express req.ip Property), please comment here. I will help you immediately.

We make use of cookies to improve our user experience. By using this website, you agree with our Cookies Policy
AgreeCookie Policy