在Hapi.js Restful API中了解请求IP

时间:2015-04-07 16:15:54

标签: javascript node.js hapijs

我正在使用node.js和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 是未定义的。 我怎样才能解决我的问题?

2 个答案:

答案 0 :(得分:7)

使用request.info.remoteAddress代替request.connection.remoteAddress

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

答案 1 :(得分:2)

以下是对已接受答案的改进,该答案说明了在请求通过多个代理服务器的情况下,x-forwarded-for标头可以是逗号分隔的多个IP地址集。在这种情况下,客户端IP将是最左边(第一个)IP地址。此代码将处理标头的两种可能格式:

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