确定 Node .js 应用程序中的请求是否为本地请求

Determine if Request is Local in Node.js app

本文关键字:请求 是否 Node js 应用程序 确定      更新时间:2023-09-26

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

谢谢!

获取

服务器地址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。