github-pages - 如何在 GitHub 公共(public)存储库中隐藏 API key ?

标签 github-pages github-actions api-key openweathermap

我正在做一个简单的前端项目,我(或用户)在其中对 openweathermap api 进行 API 调用,获取天气信息并将其显示在网站上。
简单的 HTML、CSS 和 vanilla JS
所以我想保持 repo 公开并使用 GitHub Pages 托管站点......但我的 js 文件包含运行时所需的 API key 。
额外信息:
(所有这些都是我搜索时发现的)
我知道有一种方法可以将 API key 保存在 GitHub secret 中,然后在 yml 文件中将其作为 GitHub Actions 中的环境变量引用。
但是如何在运行时为访问我网站的任何用户将该 secret 放入 js 代码中?

最佳答案

请注意,您尝试执行的操作并不安全。即使有一种方法可以让 GH Pages 在请求时将 secret API key 注入(inject)到 js 文件中,每个 Web 客户端都会有一个该 js 文件的副本,其中嵌入了明文 key 。
您将需要某种最小的后端来安全地存储 API key 并将来自静态网页的调用中继到 openweathermap API。
有很多方法可以设置这样的后端。 older question评论中的链接讨论了一些方法。请注意,现在,您可以使用无服务器 FaaS 服务,例如 AWS LambdaAzure Functions .
顺便说一句,这是一个完全有效的问题,您当然不会“太愚蠢”。祝你好运!

关于github-pages - 如何在 GitHub 公共(public)存储库中隐藏 API key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65509794/

相关文章:

google-maps - 如何在github页面的公共(public)存储库中安全地存储谷歌地图api key ?

android - 向应用程序的 Google Cloud Endpoints 2 API 提供 API key 的正确方法是什么?

ruby - 未返回 GitHub Pages 配置变量

sass - 在 GitHub 页面上为 Jekyll、Haml、Sass 配置 Grunt

jekyll 在本地工作,但在 github 上不工作。要导入的文件未找到或无法读取 : minima

git - 有没有办法使用逻辑 AND 在 GitHub 操作中组合推送标准?

python - 在操作中克隆组织内的私有(private) github 存储库

swagger - 使用 Swagger 生成的客户端时, header 中的硬编码 Api 键值

github - Github页面上自定义域的子域

github-actions - JIB 与 GitHub 操作