在Hapi.jsRestfulAPI中知道请求IP
Knowing request IP in Hapi.js Restful API
我正在与 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 是未定义的。
我该如何解决我的问题?
使用request.info.remoteAddress
代替request.connection.remoteAddress
:
var ip = request.headers['x-forwarded-for'] || request.info.remoteAddress;
这里是对已接受答案的改进,它说明了在请求通过的情况下 x-forwarded-for header 可以是一组 comma-separated 多个 IP 地址的事实通过多个代理服务器。在这种情况下,客户端 IP 将是最左边(第一个)的 IP 地址。此代码将处理 header:
的两种可能格式
var xFF = request.headers['x-forwarded-for'];
var ip = xFF ? xFF.split(',')[0] : request.info.remoteAddress;
我正在与 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 是未定义的。 我该如何解决我的问题?
使用request.info.remoteAddress
代替request.connection.remoteAddress
:
var ip = request.headers['x-forwarded-for'] || request.info.remoteAddress;
这里是对已接受答案的改进,它说明了在请求通过的情况下 x-forwarded-for header 可以是一组 comma-separated 多个 IP 地址的事实通过多个代理服务器。在这种情况下,客户端 IP 将是最左边(第一个)的 IP 地址。此代码将处理 header:
的两种可能格式var xFF = request.headers['x-forwarded-for'];
var ip = xFF ? xFF.split(',')[0] : request.info.remoteAddress;