【问题标题】:Determine if Request is Local in Node.js app确定 Node.js 应用程序中的请求是否为本地
【发布时间】:2015-03-24 01:47:09
【问题描述】:

我正在学习 Node.js。在创建网站时,我将在本地运行该网站(localhost)。部署后,它将在其他服务器上运行。我的问题是,如何确定请求是否来自 localhost 或不在 Node 中?在 ASP.NET 中,我可以使用 Request.IsLocal。我正在尝试弄清楚如何在 Node 中做到这一点。

谢谢!

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    server.address()获取服务器地址。

    并且request 具有connectionsocket 对象,因为两者都可能包含远程地址(在remoteAddress 属性中),具体取决于当前连接的类型。

    但如果服务器位于反向代理之后,您必须从适当的标头中提取它,很可能是x-forwarded-for。但是,如果代理被链接,我不确定这是否成立。

    所以,总而言之,你会按照以下方式做一些事情:

    function cliAddress(req) {
      return req.connection.remoteAddress || req.socket.remoteAddress || req.headers['x-forwarded-for'];
    }
    
    server.isLocal = function(request) {
      return server.address() === cliAddress(req);
    }
    

    如果您使用 express.js,请参阅 Express.js Req.IP API。

    【讨论】:

    • 我正在使用快递。但是,我不明白您包含的链接。我在request 上看不到connectionsocket 对象
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2015-01-16
    • 2016-04-02
    • 2011-01-07
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多