我正在构建一个配置本地网络设备的应用程序 .

可以在设备上嵌入HTTP服务器,并设置mDNS为其提供可解析的主机名,如 my-device.local 也可以 .

现在的问题是:设备没有足够的存储空间来存储复杂的Web应用程序,即使是简单的表单也在推动极限 .

此外,在设备可以尝试联系Web服务之前,需要执行某些操作来与Web服务进行通信(例如将设备注册到您的帐户) .

这就是为什么我想构建一个实现以下流程的应用程序 .

  • https 上的浏览器中打开 https://online.service.net Web服务并执行操作

  • 重定向到 http://online.service.net

  • 使用来自浏览器的背景 http 请求(其中Web应用程序仍在缓存中)通过本地网络与设备 https://device.local 进行通信 .

这里的问题是,在步骤3中,整个网页需要在 http 上可用,因为CORS会阻止 https - > http 调用 . 因此,网络应用程序将部分提供 https ,部分超过 http ,这似乎是hacky和错误,一些浏览器(如最近的Chrome版本)会抱怨 .

我能想到的其他解决方案:

  • 让设备使用https,这需要 device.local 域的证书,没有权限授予我们,因此用户需要手动接受它们 . 此外,他们需要安全存储 .

  • 让网站和设备与第三台服务器通信 . 这是不可能的,因为该设备不一定具有互联网连接(尝试设置为's actually part of what I'm) . 即使它有,将设备与浏览器会话相关联也可能很难 .

  • 而不是重定向到 http://online.service.net ,而是重定向到 http://device.local 而只是对适合设备的更简单的表单感到满意 . 这没关系,已经是此流程的"fallback"模式 . 但它打破了服务的其他一些要求 . 现在无法知道设备何时在网络上实际处于活动状态,这是通过从网页上通过http轮询设备来完成的 . 这为设备未正确连接的用户带来了很多错误,因此无法找到 .