2016-11-20 13 views
0

私はNodeJSとそのすべてのawesomenessの若干です。私はgeoip-literequest-ip npmパッケージをどのように組み合わせて私のアプリのユーザーの所在地を取得するかを考えようとしています。NodejsクライアントIP

は、これまでのところ私が持っているこの

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; 

私はトラブル要求-IPを使用してIPを取得するために考え出すを抱えています。 geoip-liteはかなり簡単で2分かかりました。私はNodejsへの私のnoobnessがどちらも助けていないと思う。私が間違ってやっていることを私に見せたり、考えていないことを示すコード例は素晴らしいでしょう。

+0

どのURLをテストしていますか?偶然、 'http:// localhost:3000 /'のようなものでしょうか? – Sgnl

答えて

0

私は問題がどのようにあなたがサーバーに要求していると思います。ここエクスプレスだ::ffff:127.0.0.1

:あなたはhttp://localhost:3000のようなURLを使用している場合、あなたはおそらく、IPアドレスを取得します代わりにhttp://127.0.0.1:3000をしようとした場合

あなたのテストのために

、あなたは、::1

を取得しますがコードを使用してテストしました。私はPostman Appを使用してリクエストを行いました。

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); 
関連する問題