这似乎是一个非常基础的问题,没有优雅的解决方案/答案。
如何从(1)服务器或(2)客户端访问客户端(远程)IP地址?
这似乎是一个非常基础的问题,没有优雅的解决方案/答案。
如何从(1)服务器或(2)客户端访问客户端(远程)IP地址?
获取客户端IP:
在没有HTTP请求的情况下,在函数中,您应该能够使用以下代码获取客户端IP:
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;
正如Florin所提到的,现在这一切都与Meteor集成在一起,而不是我们自己做的黑暗时代。但是,我另外包装了一个跟踪所有打开连接并允许您查询其IP的软件包:https://github.com/mizzao/meteor-user-status。它还可以执行其他有用的操作。
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;
},
});
clientAddress
提供 - http://docs.meteor.com/#/full/meteor_onconnection - Dan Dascalescu__meteor_bootstrap__.app
,在0.6.5之后推荐使用WebApp.connectHandler
。