确定Node.js应用程序中的Request是否为Local

时间:2015-01-25 13:04:53

标签: javascript node.js

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

requestconnectionsocket个对象,因为两者都可以保存远程地址(在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。