通过connect的Connect包获取客户端IP

问题描述 投票:0回答:2

我有一个用nodejs编写的小服务器脚本,我想获取客户端IP,但我似乎还没有找到方法。

我正在使用 Connect 包来创建我的服务器。

有人知道如何使用nodejs的Connect包获取ip吗?

我还在这里查看了文档:http://www.senchalabs.org/connect/但我没有找到它,可能是我错过了一些东西。

node.js node.js-connect clientip
2个回答
1
投票

直接连接(不是通过代理)时,您可能无法做到这一点,但请自行尝试。我从 connect-readme 中获取了 hello world 示例,并打印出了请求对象的内容:

var connect = require('connect')
  , http = require('http');
  , util = require('util');

var app = connect()
  .use(function(req, res){
    console.log(util.inspect(req));
    res.end('Hello from Connect!\n');
  });

http.createServer(app).listen(3000);

您在这里找不到任何客户端IP。

但无论如何,node.js-services 不应该直接连接,而是通过转发代理、负载均衡器等连接。

当使用apache的proxypass时,你会在标头中找到客户端的原始IP地址,查找

req.headers['X-Forwarded-For']

0
投票

我使用以下方法解决了我的问题:

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || 
    req.socket.remoteAddress || req.connection.socket.remoteAddress;

我从这个答案中得到了这个:https://stackoverflow.com/a/19524949/1358670

© www.soinside.com 2019 - 2024. All rights reserved.