github-pages - 如何在 GitHub 公共存储库中隐藏 API 密钥?
问题描述
我正在做一个简单的前端项目,我(或用户)对 openweathermap api 进行 API 调用,获取天气信息并将其显示在网站上。
简单的 HTML、CSS 和原版 JS
因此,我想保持 repo 公开并使用 GitHub Pages 托管该站点......但我的 js 文件包含运行时所需的 API 密钥。
额外信息:
(我搜索时发现的所有这些)
我知道有一种方法可以将 API 密钥保存在 GitHub 机密中,然后在 yml 文件中将其作为 GitHub Actions 中的环境变量进行引用。但是,对于访问我网站的任何用户,我如何在运行时将这个秘密放入 js 代码中呢?
解决方案
请注意,您尝试执行的操作并不安全。即使有办法让 GH Pages 在请求时将秘密 API 密钥注入 js 文件,每个 Web 客户端也会拥有该 js 文件的副本,其中嵌入了明文密钥。
您将需要某种最小的后端来安全地存储 API 密钥并将调用从您的静态网页中继到 openweathermap API。
有很多方法可以设置这样的后端。评论中链接的较旧问题讨论了一些方法。请注意,现在,您可以使用无服务器 FaaS 服务,例如AWS Lambda或Azure Functions。
顺便说一句,这是一个完全有效的问题,你当然不是“太愚蠢”。祝你好运!
推荐阅读
- ruby - 我不明白 Unexpected end 错误消息
- sql - DB2:查找与逗号分隔的值不同的值
- firebase - 有没有办法通过颤振和条纹创建每月订阅?
- reactjs - 如何使用react路由在页面之间切换
- sql - 列出每个数量和产品类型的值
- list - 颤振:列表
, 如何根据标题删除重复文件 - python - 使用 Python SDK 在 Spark 上运行 Apache Beam wordcount 管道时并行度低
- selenium - Selenium (Java):dndScript() 方法未定义
- mysql - 内连接不准确匹配
- android - 如何使用 php 和 mysql 将视频上传到服务器?