【发布时间】:2020-06-06 20:14:55
【问题描述】:
我有一个包含一些 API 路由的快速服务器,如下所示:
server.post("/api/send-email", (req, res) => {
});
});
您不需要身份验证令牌来访问 API,但我只希望我的网站 mydomain.com 能够使用它。
我尝试过像这样启用限制访问:
function restrictAccess(req, res, next) {
if (req.headers['origin'] !== 'http://localhost:3000') {
res.sendStatus(403);
} else {
next();
}
}
然后我将限制访问作为中间件传递到我的路由中。 当我使用邮递员发出 POST 请求时,我无法再使用 API,但我可以更改原始标头并再次访问它。
如何只允许来自mydomain.com 的请求?我已经在互联网上搜索了很长时间,但找不到任何东西。有没有可能?
【问题讨论】:
-
简而言之,你不能。任何像邮递员或任何脚本这样的工具都不能发送它想要的任何标题,因此标题本身对于限制对您域中网页的访问是无用的。这就是网络的工作方式。限制访问通常需要用户登录或类似的东西(可能设置一个您可以检查的 cookie),然后如果您发现您的 API 被滥用,您可以禁止/删除正在执行此操作的特定用户帐户。