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