我正在学习Node.js.在创建网站时,我将在本地运行网站(localhost
)。部署后,它将在其他服务器上运行。我的问题是,如何在Node中确定请求是否来自localhost?在ASP.NET中,我可以使用Request.IsLocal
。我正试图弄清楚如何在Node中做到这一点。
谢谢!
答案 0 :(得分:3)
有server.address()
来获取服务器地址。
request
有connection
和socket
个对象,因为两者都可以保存远程地址(在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。