【问题标题】:Knowing request IP in Hapi.js Restful API了解 Hapi.js Restful API 中的请求 IP
【发布时间】:2015-11-11 02:49:37
【问题描述】:

我正在使用 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 是未定义的。 我该如何解决我的问题?

【问题讨论】:

    标签: javascript node.js hapijs


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 最好不要相信 x-forwarded-for 中的第一个 IP 地址,因为它可能会被原始请求者欺骗。根据请求通过的代理服务器的数量,在数组中倒退要好得多。
      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多