我正在处理仅需要从其本地安装的本机应用程序浏览器获取的数据的Web应用程序。
您如何绕过浏览器沙箱,以便可以与本机应用程序通信(安全,因为数据可能是敏感的)。
在我发现的唯一示例中,用户手动在两者之间移动了一些令牌和文件,这是我想避免的可怕的用户体验。
我正在处理仅需要从其本地安装的本机应用程序浏览器获取的数据的Web应用程序。
您如何绕过浏览器沙箱,以便可以与本机应用程序通信(安全,因为数据可能是敏感的)。
在我发现的唯一示例中,用户手动在两者之间移动了一些令牌和文件,这是我想避免的可怕的用户体验。
Answers:
您可以将网络服务器嵌入本机应用程序中,然后您的客户端可以通过指向http:// localhost / xyz的硬编码链接对其进行调用(您可能要担心此处的跨站点脚本警告,和/或运行服务器)在非HTTP端口上)。如果您使用websocket,则本机应用程序甚至可以在浏览器启动通信后将数据推送到Web浏览器。
我自己在本地进行操作,一个嵌入式Web浏览器控件从自定义Web服务器请求可视化数据,并且在开发时我都在同一台PC上运行它们。
有许多用于C / C ++的微型高效的嵌入式Web服务器(Mongoose,NxWeb,civetweb等),C#倾向于使用完整的WCF服务器,python IIRC附带一个小型Web服务器。
您可以通过两种方式将本机应用程序和浏览器应用程序混合在一起。
您可以将浏览器嵌入本机应用程序中,就像PhoneGap应用程序在移动设备上所做的一样。这样一来,您就可以扩展浏览器的JavaScript引擎,并在两者之间进行调用。
或者,重新考虑您的体系结构。让本机应用程序和基于浏览器的应用程序都将服务器用作中介。因此,浏览器和本机应用程序都只与Web服务器通信,后者根据需要在两者之间转发信息。
或者,如果您需要本机功能...只需制作一个本机应用程序。
除了在受控环境中运行的应用程序外,我不建议将“本地Web服务器”方法用于任何其他情况。如果您的软件旨在以最低的支持要求在最终用户计算机上安装和运行,那么您将发现自己遇到了与防火墙和防病毒软件相关的大量问题。