如何在 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 地址? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 中获取客户端 IP 地址和 MAC 地址?