📜  express 获取远程 ip - Javascript (1)

📅  最后修改于: 2023-12-03 14:41:04.669000             🧑  作者: Mango

Express 获取远程 IP

在开发 web 应用程序时,我们需要获取远程客户端的 IP 地址,用于进行访问控制、统计等操作。本文将介绍如何在 Express 中获取远程 IP。

获取远程 IP 的方法

获取远程 IP 有多种方法,常见的有 request.headers['x-forwarded-for']request.connection.remoteAddressrequest.socket.remoteAddress。各种方法的详细介绍如下:

1. request.headers['x-forwarded-for']

request.headers['x-forwarded-for'] 是由 HTTP 代理或负载均衡器设置的一个标头,用于指示真实的客户端 IP。这种方法需要在代理或负载均衡器上进行配置。

示例代码:

const express = require('express');
const app = express();

app.get('/', function(req, res) {
  const remoteIP = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  res.send('Remote IP: ' + remoteIP);
});

app.listen(3000, function() {
  console.log('Listening on port 3000');
});
2. request.connection.remoteAddress

request.connection.remoteAddress 是获取远程客户端 IP 地址的最原始方法。这种方法获取的 IP 地址可能不是真实的客户端 IP,而是最后一个 HTTP 代理或负载均衡器的 IP。

示例代码:

const express = require('express');
const app = express();

app.get('/', function(req, res) {
  const remoteIP = req.connection.remoteAddress;
  res.send('Remote IP: ' + remoteIP);
});

app.listen(3000, function() {
  console.log('Listening on port 3000');
});
3. request.socket.remoteAddress

request.socket.remoteAddress 是获取客户端 IP 地址的另一种方法。这种方法也可能获取到最后一个 HTTP 代理或负载均衡器的 IP。

示例代码:

const express = require('express');
const app = express();

app.get('/', function(req, res) {
  const remoteIP = req.socket.remoteAddress;
  res.send('Remote IP: ' + remoteIP);
});

app.listen(3000, function() {
  console.log('Listening on port 3000');
});
总结

以上三种方法都可以获取远程客户端 IP 地址,但需要根据具体情况选择。如果在代理或负载均衡器前面,则应该使用 request.headers['x-forwarded-for'];否则,可以使用 request.connection.remoteAddressrequest.socket.remoteAddress