如何在 Meteor 中访问客户端 IP 地址? [复制]

Posted

技术标签:

【中文标题】如何在 Meteor 中访问客户端 IP 地址? [复制]【英文标题】:How to access client IP address in Meteor? [duplicate] 【发布时间】:2013-09-01 17:06:38 【问题描述】:

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

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

【问题讨论】:

见:***.com/questions/102605/… 不知道 cgi-bin 是什么或如何将其用于此目的...:/ 【参考方案1】:

正如弗洛林所说,现在这一切都与 Meteor 整合在一起,而不是在黑暗时代我们不得不自己做。但是,我另外将它包装在一个包中,该包跟踪所有打开的连接并允许您查询它们的 IP:https://github.com/mizzao/meteor-user-status。它还做了很多其他有用的事情。

【讨论】:

【参考方案2】:

获取客户端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 函数:

在目标路由的action函数中使用:

clientIp = this.request.connection.remoteAddress;

【讨论】:

Salut Florin,提一下这个问题是this one 的完美复制品怎么样? 我完全同意,当时我想发表评论而不是回答,但我没有足够的声誉点(在不属于你的问题/答案上发表评论)需要50便士或更多) 这仅在 0.7.1.1 版之后适用于那些像我一样在旧版本上运行应用程序的人。【参考方案3】:

在客户端

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;
    ,
);

【讨论】:

现在已经过时了。客户端 IP 现在通过核心 clientAddress - docs.meteor.com/#/full/meteor_onconnection 提供【参考方案4】:

您可以使用这个包:https://github.com/gadicohen/meteor-headers。它在客户端和服务器上都获取标头。

如果你想在没有包的情况下这样做,你可以从上面的代码中“启发”自己,要记住的是,在 0.6.5 之前,我们使用了“隐藏”__meteor_bootstrap__.app,而在 0.6.5 之后它是建议改用WebApp.connectHandler

【讨论】:

这是一个非常好的解决方案:) 在服务器上运行得不太好——也许我做错了:github.com/gadicohen/meteor-headers/issues/2

以上是关于如何在 Meteor 中访问客户端 IP 地址? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在路由中获取客户端 IP

如何在 laravel 中获取客户端 IP 地址和 MAC 地址?

如何返回访问 /cgi-bin 中 Go 程序的客户端的 IP 地址?

如何在 Laravel 5+ 中获取客户端 IP 地址

如何在Laravel 5+中获取客户端IP地址?

在 Jasmine 中访问 Meteor 模板辅助函数以进行集成测试