我有一个 API,假设api.example.com
它受 KONG 中的 CORS 保护。该 API 也由后端进行身份验证。现在,我需要允许一些外部用户使用 API,但我需要先对其进行速率限制。
那么,有没有办法用这个 OR 子句本地保护服务,或者我应该制作一个插件?:
我需要允许从 WEB、INTERNALS 和 EXTERNALS 访问 api
条件是:
- api.example.com 可以被 Kong (WEB) 中受 CORS 插件保护的浏览器使用
- api.example.com 在浏览器外部使用,但仅与 apikey(内部)一起使用,因此我不需要在前端请求中发送 apikey。
- 此外,如果它在没有 apikey 和外部浏览器的情况下使用,它将受到速率限制(EXTERNAS)'
就像是
if (fromBrowser) return true;
else if (valid(apikey)) return true;
else if (!valid(apikey)) return false;
else if (empty(apikey) && !fromBrowser && rateLimit()) return true;
else return false;
我也对这个用例的其他拓扑持开放态度。如果有人提议,我可以创建更多 DNS 条目。我不能改变的是主要的 API url,但我可以为 EXTERNALS 用户创建一个新的。