📜  node.js http请求ip地址 - Javascript(1)

📅  最后修改于: 2023-12-03 15:33:09.563000             🧑  作者: Mango

Node.js HTTP请求IP地址

在使用Node.js时,经常需要获取客户端的IP地址。为了实现这个功能,我们可以使用Node.js的HTTP模块来获取客户端的IP地址。

获取客户端IP地址

在HTTP请求中,客户端的IP地址可以通过请求头中的x-forwarded-for字段或者remoteAddress属性来获取。

const http = require('http');
const server = http.createServer((req, res) => {
  const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  console.log(`客户端IP地址:${ip}`);
  res.end();
});
server.listen(3000);

上面的示例代码使用了Node.js的HTTP模块来创建一个简单的HTTP服务器。在每个请求处理函数中,我们从请求头中获取x-forwarded-for字段,如果不存在,则从remoteAddress属性中获取客户端的IP地址。

IP地址过滤

获取客户端的IP地址之后,我们常常需要对其进行过滤和验证,以保证应用程序的安全和可靠性。

const http = require('http');
const server = http.createServer((req, res) => {
  const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  const validIp = /^(\d{1,3}\.){3}\d{1,3}$/.test(ip) ? ip : 'unknown';
  if (validIp === 'unknown') {
    console.log(`无效IP地址:${ip}`);
    res.writeHead(400, {'Content-Type': 'text/plain'});
    res.end('Invalid IP address');
    return;
  }
  console.log(`有效IP地址:${validIp}`);
  res.end('Hello World!');
});
server.listen(3000);

上面的示例代码使用正则表达式来过滤IP地址。如果IP地址不符合规则,则返回错误响应。如果IP地址符合规则,则将其视为有效地址,并继续响应处理。

总结

Node.js的HTTP模块提供了方便的API,可以帮助我们获取客户端的IP地址。通过对IP地址进行过滤和验证,我们可以更好地保证应用程序的安全和可靠性。