我的配置如下:
我在“https://dev.domain.tld”上创建了一个“index.html”文件,其中包含一个 iframe,它应该显示来自“Applis”服务器的内容:
<iframe id="streamlit" title="Test Streamlit" src="http://192.168.0.11:5001"></iframe>
从“Web”运行 curl 调用时:
curl http://192.168.0.11:5001
我从 192.168.0.11 得到了正确的答案(不确定它是否相关,但它是一个 dockerized Streamlit 应用程序)。 现在我的 iframe 不起作用,显然是因为 docker 通过“http://”为应用程序提供服务。错误,法语:
Blocage du chargement du contenu mixte actif (mixed active content) « http://192.168.0.11:5001/
我想知道可以做些什么来显示这种使用 http 服务的 iframe。我尝试了
<meta http-equiv="Content-Security-Policy" ...
的许多组合来允许这个......我知道 CSP 的目标和阻止“混合活动内容”并且它不能被绕过,但这是在 LAN 上的防火墙后面,我认为可能有其他人有同样的问题......
如果无法做到这一点,我想我将不得不考虑通过 https 从 docker 提供我的应用程序 ...
出于开发目的,您可以通过 http 加载主页或修改浏览器的混合内容设置。以下是一些在 Chrome 中可能仍然有效的方法:How to get Chrome to allow mixed content?
CSP 无法阻止活动混合内容的阻塞。但是您可以使用“upgrade-insecure-requests”指令通过 https 加载所有内容以防止混合内容。但是内容当然需要通过 https 提供。