Javascript 从Meteor中的请求对象获取IP地址
我想在将客户端重定向到外部URL之前检索客户端的IP地址 这是我的密码:Javascript 从Meteor中的请求对象获取IP地址,javascript,meteor,request,iron-router,Javascript,Meteor,Request,Iron Router,我想在将客户端重定向到外部URL之前检索客户端的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;
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('/');
}
});
我的问题是:我可以从请求
对象获取IP地址吗?根据,您从获取的请求如下。请求
将是一个典型的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.request.headers['x-forwarded-for']
。我尝试过,结果是127.0.0.1
。因此,如果我的应用程序运行在127.0.0.1:3000
上,那么我想localhost是正确的?非常正确!您应该尝试使用其他设备连接到本地网络(智能手机可以正常工作),然后转到http://:3000。然后你应该在结果中获得另一台设备的本地IP。我在iPhone上尝试过,但也得到了127.0.0.1
,尽管我使用了计算机的IP地址。有什么想法吗?this.request.headers['x-forwarded-for']
在我的机器127.0.0.1
和iPhone上返回内部IP地址。是否可以获取外部IP地址?是的,您可以获取外部IP地址,但不能从连接服务器的本地网络上的设备获取。这很好!因为您不希望本地网络中的所有设备都显示相同的外部IP。这样,即使请求来自本地网络,您也可以跟踪它们。检查包: