假设有一个 API 可以做一些有用的事情,人们每月付费才能使用。假设此 API 的端点如下:
https://www.example.com/api/GetMeaningOfLife
由于 API 是“付费墙”,API 的使用者必须证明他们是 API 的付费客户,然后 API 才能工作。
构建 API 的一种简单方法是,在发布到 API 时,客户端必须提供一个密钥来标识他们是 API 的付费客户。如果未提供密钥,API 将失败。
在 Web 应用程序的上下文中,为了确保密钥保密,可以只使用服务器端的 API,并将 API 调用的结果传递到生成的网页。这样,用户就无法在浏览器的开发者控制台中窥探以查找密钥,因为 API 消耗是在服务器上完成的。
但是,如果 API 意味着从前端(即 JavaScript)调用怎么办?如何设计像这样的付费 API,以便通过 JavaScript 从前端调用它,同时也确保其他人不能只是从您的网站复制/粘贴一些密钥并开始在他们自己的网站上冒充您来访问您要支付 API 费用吗?有什么选择?