对不起,如果这可能是一个微不足道的问题,但我想确定并且无法在网上找到明确的答案。
我正在编写一个使用 Mapbox 的小应用程序,我正在使用react-map-gl。他们需要客户端的访问令牌,因此他们建议使用环境变量。我的问题是可以简单地在前端文件夹中创建一个 .env 文件并将变量放在那里吗?
谢谢!
对不起,如果这可能是一个微不足道的问题,但我想确定并且无法在网上找到明确的答案。
我正在编写一个使用 Mapbox 的小应用程序,我正在使用react-map-gl。他们需要客户端的访问令牌,因此他们建议使用环境变量。我的问题是可以简单地在前端文件夹中创建一个 .env 文件并将变量放在那里吗?
谢谢!
您无法避免在前端公开 API 密钥。如果有人想在您的源代码中挖掘,他们会找到它们。
但是,您应该始终将 Internet 上可见的任何 API 密钥配置为仅限于特定的引荐来源,即您网站的域。
通常这是在通过提供商的仪表板创建 API 密钥期间完成的。
对于 Mapbox,您可以在此处阅读有关限制 API 令牌的文档。它指出:
您可以通过添加 URL 限制使 Web 地图的访问令牌更加安全。当您向令牌添加 URL 限制时,该令牌将仅适用于源自您指定的 URL 的请求。没有限制的令牌适用于源自任何 URL 的请求。
(强调我自己)
他们需要客户端的访问令牌,因此他们建议使用环境变量。我的问题是可以简单地在前端文件夹中创建一个 .env 文件并将变量放在那里吗?
前端开发中使用环境变量有两个原因:
为方便起见,从源代码中删除特定于环境的配置。
将敏感信息排除在源代码之外。您不应向版本控制提交 API 令牌或其他类似的敏感细节。
在前端代码中使用环境变量不会对最终用户保密。无论环境变量在构建时的值是什么,都将在编译输出中可见。