标题没有透露IP地址?

时间:2015-09-21 11:51:47

标签: node.js header koa

{ host: '127.0.0.1:8080',
  connection: 'keep-alive',
  'cache-control': 'max-age=0',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36',
  accept: '*/*',
  referer: 'http://127.0.0.1:8080/',
  'accept-encoding': 'gzip, deflate, sdch',
  'accept-language': 'en-US,en;q=0.8',
  cookie: 'io=bP2eXrqS3SkWYY4cAAAC11' }

我正在使用来自npm的koa.io来尝试获取客户端连接的IP地址。当我尝试以下代码时,上面的内容将打印在控制台中。我似乎无法获得客户端的IP地址。

app.io.use(function* userLeft(next) {
    // on connect
    console.log(this.headers);
});

我目前在localhost上。所以我期望客户端IP地址是127.0.0.1?

1 个答案:

答案 0 :(得分:0)

试试this.request.ip。它应该工作......

经过测试,我发现了两件事。

  1. 在代理后面时,请确保代理使用x-forwarded-for标头转发客户端ip。
  2. 理论上1. this.request.ip应该足以返回客户端ip,但它不是。但在配置我的代理后,this.request.header["x-forwarded-for"]将返回客户端IP
  3. 使用这个简单的服务器进行测试:

    var koa = require('koa');
    var app = koa();
    
    app.use(function *(){
    this.body = this.request.ip;
    });
    
    app.listen(3000);