Javascript 如何从前端通过服务器发出API请求,使我的API密钥不会';最终用户看不见吗?

Javascript 如何从前端通过服务器发出API请求,使我的API密钥不会';最终用户看不见吗?,javascript,api,backend,Javascript,Api,Backend,我已经研究过,如果我想隐藏我的API密钥,我必须通过后端执行请求 隐藏API密钥的最佳方法是什么? 请不要建议使用环境变量,我想知道通过服务器向API服务器发出API请求的最佳实践。不幸的是,与您不建议的请求相反,环境变量是行业标准。通过这样做: 您不必将API密钥提交到代码存储库 您可以动态地更改它们,然后重新启动系统以获取它们,或者以每次需要时都能重新获取它们的方式编写代码 它们最终不会出现在您的UI代码中,而在您发送的每个请求中都是可见的 另一种方法是将凭据值存储在数据库中的某个位置。但你

我已经研究过,如果我想隐藏我的API密钥,我必须通过后端执行请求

隐藏API密钥的最佳方法是什么?
请不要建议使用环境变量,我想知道通过服务器向API服务器发出API请求的最佳实践。

不幸的是,与您不建议的请求相反,环境变量是行业标准。通过这样做:

  • 您不必将API密钥提交到代码存储库
  • 您可以动态地更改它们,然后重新启动系统以获取它们,或者以每次需要时都能重新获取它们的方式编写代码
  • 它们最终不会出现在您的UI代码中,而在您发送的每个请求中都是可见的

  • 另一种方法是将凭据值存储在数据库中的某个位置。但你有鸡/蛋的情况。您将在何处存储数据库凭据以便访问数据库?无法进入数据库,因为您无法读取它们。您必须将它们放在一个环境变量中,或者在代码存储库中提交DB凭据——这并不是最佳实践

    如果你投票否决了我的答案@Bix,最好解释一下原因。你的意思是你不想把API键放在浏览器可见的代码中?在这种情况下,那么是的,您必须向您的服务器发出请求,然后服务器向API发出请求并将响应传回。因此,API密钥可以安全地存储在服务器上。这种情况并不少见。隐藏密钥本质上很简单——不要在任何可以通过http请求下载的文件中提供密钥,但是环境变量不是visilbe吗?我相信React在某个地方说过,它可以通过开发者控制台看到(再也找不到了)。上面的JK先生认为这个问题很愚蠢,尽管在如何在没有.env的情况下隐藏api键这个主题上我找不到任何问题。在UI中不存在env变量,除非在缩小/构建/etc时设置某些标志。环境变量在服务器端项目中很常见,除非您已经公开了对服务器的访问(这是一种不好的做法),否则它们是不可见的。好的,谢谢。顺便说一句,我没有投反对票。一定是JK。