如何在Meteor中访问客户端IP地址?

时间:2013-08-29 10:06:46

标签: javascript node.js meteor meteorite

这似乎是一个非常基本的问题,没有优雅的解决方案/答案。

如何从(1)服务器或(2)客户端访问客户端(远程)IP地址?

4 个答案:

答案 0 :(得分:15)

获取客户端IP:

如果没有http请求,您应该可以在函数中获取clientIP:

clientIP = this.connection.clientAddress;
//EX: you declare a submitForm function with Meteor.methods and 
//you call it from the client with Meteor.call().
//In submitForm function you will have access to the client address as above

使用http请求并使用iron-router及其Router.map函数:

在目标路线的动作功能中使用:

clientIp = this.request.connection.remoteAddress;

答案 1 :(得分:7)

正如Florin所说,现在这几乎与Meteor融为一体,而不是我们自己必须做的黑暗时代。但是,我还将其包装在跟踪所有打开连接的包中,并允许您查询其IP:https://github.com/mizzao/meteor-user-status。它还做了许多其他有用的东西。

答案 2 :(得分:2)

在客户端

headers = {
    list: {},
    get: function(header, callback) {
        return header ? this.list[header] : this.list;
    }
}

Meteor.call('getReqHeaders', function(error, result) {
    if (error) {
        console.log(error);
    }
    else {
        headers.list = result;
    }
});

在服务器上:

headers = {
    list: {},
    get: function(header) {
        return header ? this.list[header] : this.list;
    }
};

var app = typeof WebApp != 'undefined' ? WebApp.connectHandlers : __meteor_bootstrap__.app;
app.use(function(req, res, next) {
    reqHeaders = req.headers;
    return next();
});

Meteor.methods({
    'getReqHeader': function(header) {
        return reqHeaders[header];
    },
    'getReqHeaders': function () {
        return reqHeaders;
    },
});

答案 3 :(得分:1)

您可以使用此程序包:https://github.com/gadicohen/meteor-headers。它在客户端和服务器上都有标头。

如果你想在没有包的情况下做到这一点,你可以从上面的代码中“启发”自己,要记住的是在0.6.5之前我们使用'隐藏'__meteor_bootstrap__.app并发布0.6。 5建议改为使用WebApp.connectHandler