Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTTPS web应用程序能否调用非HTTPS来源?_Javascript_Https_Service Worker - Fatal编程技术网

Javascript HTTPS web应用程序能否调用非HTTPS来源?

Javascript HTTPS web应用程序能否调用非HTTPS来源?,javascript,https,service-worker,Javascript,Https,Service Worker,我有一个小型web应用程序,需要调用本地网络上的设备。它使用获取设备的本地IP地址(例如)来完成此操作。该设备不通过HTTPS为其流量提供服务,因此无法访问。该web应用程序是面向公众的,我想添加一个服务工作者以获得脱机支持 服务工作者需要HTTPS,从HTTPS来源呼叫非HTTPS来源是一种安全风险,因此现代浏览器不允许。如果不使用本地代理(这将无法达到目的),是否有办法绕过此“限制” 如何才能“”呼叫?的可能重复。浏览器不允许这样做,因为它破坏了用户信任模型 本地HTTPS代理是理想的选择。

我有一个小型web应用程序,需要调用本地网络上的设备。它使用获取设备的本地IP地址(例如)来完成此操作。该设备不通过HTTPS为其流量提供服务,因此无法访问。该web应用程序是面向公众的,我想添加一个服务工作者以获得脱机支持

服务工作者需要HTTPS,从HTTPS来源呼叫非HTTPS来源是一种安全风险,因此现代浏览器不允许。如果不使用本地代理(这将无法达到目的),是否有办法绕过此“限制”

如何才能“”呼叫?

的可能重复。浏览器不允许这样做,因为它破坏了用户信任模型


本地HTTPS代理是理想的选择。将公共DNS条目(如
internal.example.com
)配置为低TTL(如果您的内部IP经常更改),以指向您的内部IP。为该子域创建受信任的SSL证书,然后使用该SSL证书运行本地HTTPS代理。如果您的内部服务器位于防火墙后面,请首先将
internal.example.com
指向公共web服务器,在该公共服务器上创建证书,然后复制证书并将DNS更改为本地服务器。或者使用通配符证书
*.example.com
,以完全避免“临时公开”的麻烦。

谢谢,但是任何人都可以使用这些设备。因此,用户可能需要通过应用程序更改本地IP地址。我看不出有任何其他方法可以解决这个问题-使用服务工作者的脱机支持似乎不是一个选项:(使用设备明确信任的自签名CA运行HTTPS如何?在这种情况下,设备完全不在我的控制范围内。所讨论的设备是Roku TV。web应用程序可以在上找到。TV可以通过简单的http请求控制。对于我自己的个人设备,我在rout中保留了设备的IPer和应用程序中的硬编码。将来我可能会添加设备(或多个设备)的IP发现。我还想解决这个问题,并使用服务人员添加脱机支持。我相信服务人员的设计不可能解决我的具体问题,但这个答案是最可接受的。感谢@anthumchris只想补充一点,HTTPS来源可以调用
http://127.0.0.1
因为它被视为trusted来源。如果您的目标是向同一台计算机上的服务器发出请求,这可能会有所帮助。