从Meteor中的请求对象获取IP地址

时间:2015-08-19 13:29:09

标签: javascript meteor request iron-router

我想在将客户端重定向到外部网址之前检索客户端的IP地址。

这是我的代码:

Router.route('/:_id', {name: 'urlRedirect', where: 'server'}).get(function () {
    var url = Urls.findOne(this.params._id);
    if (url) {
        var request = this.request;
        var response = this.response;
        var headers = request.headers;
        console.log(headers['user-agent']);
        this.response.writeHead(302, {
            'Location': url.url
        });
        this.response.end();
    } else {
        this.redirect('/');
    }
});

我的问题是:我可以从request对象获取IP地址吗?

1 个答案:

答案 0 :(得分:2)

根据the Iron-Router guide,您从this.request获得的请求将是典型的NodeJS请求对象:

Router.route('/download/:file', function () {
  // NodeJS request object
  var request = this.request;

  // NodeJS  response object
  var response = this.response;

  this.response.end('file download content\n');
}, {where: 'server'});

因此,您应该能够在this.request.connection.remoteAddress

中循环IP地址

正如this answer中所述,在某些情况下,您可能还需要查看this.request.headers['x-forwarded-for']