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.
Thereq.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:
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.
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
Logging Client IP Addresses:
Use
req.ip
to log client IP addresses for requests, aiding in debugging and monitoring.example.jsCopiedapp.use((req, res, next) => { const clientIP = req.ip; console.log(`Request from IP: ${clientIP}`); next(); });
IP-Based Authentication:
Leverage
req.ip
for IP-based authentication, allowing or denying access based on client IP addresses.example.jsCopiedapp.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
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.jsCopied// Enable trust for the X-Forwarded-For header app.set('trust proxy', true);
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.jsCopied// 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:
Author
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
If you have any doubts regarding this article (Express req.ip Property), please comment here. I will help you immediately.