2017-03-16 147 views
0

我想獲取本地域的IP地址以獲取地理位置。但我只能得到內部IP地址,這不能用於地理定位。這是我的代碼如何使用koaJS獲取本地域IP地址

let koa = require('koa'); 
let request = require('koa-request'); 
let proxyaddr = require('proxy-addr'); 
let ip = require('ip'); 
let app = new koa(); 

app.proxy = true; 

let API_GEO = 'xxx'; 
let API_WETHER = 'xxx'; 
let KEY = 'xxx'; 
let address = ip.address(); 

app.listen(3000, function(){ 
    console.log('Server running on https://localhost:3000') 
}); 

我應該如何更改我的代碼以實現我的目標。任何人都可以給我一個例子嗎?

回答

1

不知道,如果你使用這種方法得到了用戶 ip地址(我猜它是你自己的內部服務器IP)。 Koa在ctx.request.ip的請求對象上有一個屬性。另見原始koa文件http://koajs.com

接下來的事情則是,如何將自己發送到外部APII:你可以使用像起亞請求此:https://github.com/dionoid/koa-request

app.use(function *() { 

    var options = { 
     url: 'https://your-endpoint.com', // here you propably can add you request parameters 
     headers: { 'Accept': 'application/json' } 
    }; 

    var response = yield request(options); 
    var result = JSON.parse(response.body); 

    console.log(result); 
}); 

(改編自KOA請求文檔)

+0

謝謝爲您的提示。這對我很有幫助。我還有一個問題,如何獲取地理位置數據的請求IP地址。你能看到我更新的代碼嗎? –

+0

順便說一句我發現,如果我使用request.ip。我得到的IP地址是:: 1。不能用於地理位置數據或本地是否。還有什麼我可以做的嗎? –

+1

閱讀[請求]的koa文檔(https://github.com/koajs/koa/blob/master/docs/api/request.md),您應該將'app.proxy'設置爲true: 「' request.ip' - 請求遠程地址,當'app.proxy'爲true時,支持'X-Forwarded-For'。 所以試試這個: \t'''app.proxy = true; \t let clientIP = ctx.request.ip;''' –