我正在使用node.js、express和mongodb编写一个API,它将在另一台服务器中使用。我只希望该服务器(或将来的更多服务器)能够访问我的 API。我怎样才能做到这一点?
最佳答案
如果您只想根据其他服务器的 IP 进行限制,那么您可以定义一个快速中间件来检查每个传入请求,如果 IP 不正确,则返回错误。
一个例子可能如下所示:
var app = express();
app.use(function (req, res, next) {
if (req.ip !== '1.2.3.4') { // Wrong IP address
res.status(401);
return res.send('Permission denied');
}
next(); // correct IP address, continue middleware chain
});
如果您的 API 支持一个或多个代理(或负载均衡器),您可能应该启用“信任代理”选项 ( http://expressjs.com/guide/behind-proxies.html )。
此中间件将根据您的请求,根据传入请求的 IP 地址限制对您的 API 的访问。
但是,这相当脆弱,因为如果移动服务器会发生什么?您现在需要更新您的 API 应用程序以接受不同的 IP 地址。
我强烈鼓励您对 API 使用某种形式的身份验证(预共享 key ),而不是基于 IP 的过滤。您可以使用Passport使用 Express 为您的 API 添加各种身份验证方案。
最后,无论哪种情况,如果您确实关心 API 的安全性,您可能应该确保您的 API 受到 TLS/SSL 加密的保护。
关于node.js - 如何允许特定服务器访问我的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692203/