首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs客户端IP

Nodejs客户端IP
EN

Stack Overflow用户
提问于 2016-11-20 09:25:43
回答 1查看 293关注 0票数 0

我对NodeJS和它所有的神奇之处还是个新手。我正在尝试弄清楚如何组合geoip-literequest-ip npm包来获得我的应用程序的大致用户位置。

到目前为止,我有这个

代码语言:javascript
复制
    var requestIp = require('request-ip');
var geoip = require('geoip-lite');
var express = require('express');
var app = express();

//var ip = "108.219.41.178";//207.97.227.239
//var ip = req.headers['x-real-ip'] || req.connection.remoteAddress;
//var ip = req.header('x-forwarded-for') || req.connection.remoteAddress;

var ip = ???

var geo = geoip.lookup(ip);

var port = process.env.PORT || 3000;

/*app.use('/', function(req, res, next) {
    var ipMiddleware = function(req, res, next) {
    var clientIp = requestIp.getClientIp(req); 
    next();
    };
});*/

app.get('/', function(req, res) {
    res.send('<html><head><head/><body><h1>Hello World!</h1></body></html');
});


app.listen(port, function () {
    console.log('Hello on 3000');/*always put console.log to see if its running/working*/
    console.log(geo);
    console.log("The IP is %s", geoip.pretty(ip));
});

/*node app.js to run*/

// var ip = req.headers['x-real-ip'] || req.connection.remoteAddress;

我在使用request-ip获取IP时遇到了问题。geoip-lite很简单,只需要2分钟。我想我对Nodejs的不了解也帮不上忙。一个代码示例来告诉我我做错了什么,或者没有想到什么,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2016-11-20 09:50:59

我认为问题出在你向服务器发出请求的方式()。

对于您的测试,如果您使用像http://localhost:3000这样的url,那么您将获得::1

但是,如果尝试使用http://127.0.0.1:3000,那么您可能会得到IP地址:::ffff:127.0.0.1

下面是我用来测试的Express代码,我使用Postman App发出请求

代码语言:javascript
复制
const Express = require('express');
const App = Express();

App.get('/', (req, res) => {
  var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress;
  res.send({ ip })
});

App.listen(3000);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40699723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档