如何混淆来自 Gatsby 的 API 调用?
How do I obfuscate API calls from Gatsby?
我正在用 Gatsby 开发一个应用程序,允许用户通过表单提交他们的信息。然后该表单通过获取将该信息提交给私有 API。问题在于此调用将 API 键暴露给浏览器,从而允许任何人将其用于任何其他 API 函数。
如何混淆 API 调用,使其不会将 API 密钥暴露给浏览器?
我想这需要我编写一个服务器端包装器,但是您如何使用 Gatsby 来做到这一点?
These responses aren't really grasping the problem. I can't keep the
API key on the server side if the submit action needs to send the API
key to the remote API. The only way I could do that is if I created a
server-side wrapper that handled the API call. How do I do that with
Gatsby?
鉴于这种情况,我认为您(至少)有两个选择:
- 使用无服务器函数来代理调用,而无需托管服务器(将存储这些环境变量的服务器)。根据您的托管平台,您可以使用 Netlify functions (for Netlify hosting), Gatsby functions (for Gatsby Cloud hosting), AWS Lambda (for Amazon-related hosting), Google Cloud Functions 等。您甚至可以在不在这些平台上托管项目的情况下使用它们。
- 像 Express 服务器一样通过 backend-for-frontend 代理 API 调用,并将机密添加到您的 Express 服务器
这两种方法都依赖于这样一个事实,即无服务器 function/Express 服务器将用作这些请求的中间件,向浏览器隐藏您的秘密。
我正在用 Gatsby 开发一个应用程序,允许用户通过表单提交他们的信息。然后该表单通过获取将该信息提交给私有 API。问题在于此调用将 API 键暴露给浏览器,从而允许任何人将其用于任何其他 API 函数。
如何混淆 API 调用,使其不会将 API 密钥暴露给浏览器?
我想这需要我编写一个服务器端包装器,但是您如何使用 Gatsby 来做到这一点?
These responses aren't really grasping the problem. I can't keep the API key on the server side if the submit action needs to send the API key to the remote API. The only way I could do that is if I created a server-side wrapper that handled the API call. How do I do that with Gatsby?
鉴于这种情况,我认为您(至少)有两个选择:
- 使用无服务器函数来代理调用,而无需托管服务器(将存储这些环境变量的服务器)。根据您的托管平台,您可以使用 Netlify functions (for Netlify hosting), Gatsby functions (for Gatsby Cloud hosting), AWS Lambda (for Amazon-related hosting), Google Cloud Functions 等。您甚至可以在不在这些平台上托管项目的情况下使用它们。
- 像 Express 服务器一样通过 backend-for-frontend 代理 API 调用,并将机密添加到您的 Express 服务器
这两种方法都依赖于这样一个事实,即无服务器 function/Express 服务器将用作这些请求的中间件,向浏览器隐藏您的秘密。