通过Javascript访问Github Pages秘密Api密钥或包含在html标记中

如何解决通过Javascript访问Github Pages秘密Api密钥或包含在html标记中

我创建了一个开源项目,我已经在缓慢的工作了两个星期,
我开始研究可以使用的api,并对使用
感兴趣 WikiArt Api
但不确定如何使用应该保密的API密钥

我最初的想法是创建一个配置文件并在其中放置密钥
但是它们仍然可以公开使用。.

这两个问题:
how to opensource a project that uses api keys
How to protect Google Api Keys in an open source project github
建议创建秘密ENV变量并以加密格式存储密钥。
我的问题是我该如何在html&
中访问或包含该隐藏键? 在我的Javascript中也需要包含在这里

<link rel="prefetch" href="https://www.wikiart.org/en/Api/2/login?accessCode=[]&secretCode=[]"/>

以及我的HTML或Javascript中的其他位置。

我不是100%肯定预取链接是包含此内容的正确位置,但是由于Api将获取图像数据,因此这是我首先想到的初始化位置。这是错误方法吗?

作为第二个问题,Wikiart Api的文档不是很好,并且没有提供任何示例代码。 任何人都可以通过以下含义解释得更好一点

在应用程序启动时创建会话:
https://www.wikiart.org/en/Api/2/login?accessCode=[accessCode]&secretCode=[secretcode]
将会话密钥添加到您的请求网址中,例如&authSessionKey =会话密钥

创建会话意味着什么?我只熟悉PHP会话,不熟悉Api会话..这是在HTML还是Javascript中完成的。这是我第一次尝试使用任何api,在观看了Traversy Medias Tutorial之后,如果有人可以提供一些代码示例,将不胜感激,他有关fetch()api的教程只能获取一个文本文件。不是外部网址。

解决方法

如果您使用的是GitHub Pages,则仅为静态站点提供托管。换句话说,GitHub Pages网站仅托管HTML和JavaScript,不提供任何后端(服务器端)支持。

关于如何在静态站点中安全使用机密,您不能。由于静态站点中的所有内容都被发送到不带服务器端组件的浏览器,因此您没有地方可以放置未发送给客户端的机密。为了安全地使用机密,您需要某种后端服务器来保存它们,以使客户端无法看到它们。

如果您需要保留API密钥或其他秘密,则需要创建一个非静态站点,并将其托管在GitHub Pages之外的其他地方。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?