2015-04-07 36 views
3

我正在使用node.js和hapi.js處理Restful API。我正在嘗試記錄請求我的某個路由的客戶端的IP地址。在Hapi.js Restful API中瞭解請求IP

這是我當前的代碼:

function(request, reply){ 
    var ip = request.headers['x-forwarded-for'] || request.connection.remoteAddress; 
    console.log('IP: ' + ip); 

    //more code... 
} 

IP是不確定的,當我看我的日誌。 我該如何解決我的問題?

回答

5

使用request.info.remoteAddress而不是request.connection.remoteAddress

var ip = request.headers['x-forwarded-for'] || request.info.remoteAddress; 
+0

非常感謝! – Leo

2

這裏是公認的答案是佔了一個事實,即X-轉發換頭可以是逗號分隔的集多個IP地址的細化請求通過多個代理服務器的情況。在這種情況下,客戶端IP將是最左邊的(第一個)IP地址。此代碼將處理標題的可能格式:

var xFF = request.headers['x-forwarded-for']; 
var ip = xFF ? xFF.split(',')[0] : request.info.remoteAddress; 
+0

可能最好不要相信x轉發的第一個IP地址,因爲它可能被原始請求者欺騙。根據請求經過的代理服務器的數量,最好在陣列中倒退。 – Sergio