我有一个小型 Web 应用程序,需要调用本地网络上的设备。它使用获取设备的本地 IP 地址(例如 http://192.168.1.25:8060)来执行此操作。该设备不通过 HTTPS 提供其流量,也不能。 Web 应用程序是面向公众的,我想添加一个 service worker 以提供离线支持。
服务 worker 需要 HTTPS,从 HTTPS 源到非 HTTPS 源的调用存在安全风险,因此现代浏览器不允许。如果不使用本地代理(这会破坏目的),是否有某种方法可以解决此“限制”?
最佳答案
How can I allow Mixed contents (http with https) using content-security-policy meta tag? 可能重复.浏览器不允许这样做,因为它破坏了用户信任模型。
本地 HTTPS 代理是理想的选择。配置一个公共(public) DNS 条目,如 internal.example.com
,使用较低的 TTL(如果您的内部 IP 经常更改)以指向您的内部 IP。为该子域创建受信任的 SSL 证书,然后使用该 SSL 证书运行本地 HTTPS 代理。如果您的内部服务器位于防火墙后面,请首先将 internal.example.com
指向公共(public) Web 服务器,在该公共(public)服务器上创建证书,然后复制证书并将 DNS 更改为您的本地服务器。或者使用通配符证书 *.example.com
来完全避免“临时公开”的麻烦。
关于javascript - HTTPS Web 应用程序可以调用非 HTTPS 来源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61704035/