使用浏览器进行桌面UI

Ins*_*ter 10 browser user-interface desktop-application

如何将浏览器用作桌面应用的UI?到目前为止我提出的方法是......

  1. 使用所有HTML/Javascript.问题:无法访问文件系统或其他任何内容.
  2. 在使用应用程序时运行本地Web服务器.问题:用户完成后如何杀死它?我的用户不够技术,无法使用Ctrl + C.
  3. 将浏览器组件嵌入常规GUI中.问题:嵌入式浏览器组件充其量只是一个小问题.对Javascript/CSS的支持永远不会像真正的浏览器那样好.
  4. ...?

理想的解决方案适用于任何技术.我知道有一些选项可以编写Firefox扩展,但我希望在后端技术和浏览器独立性方面拥有完全的自由.

SLa*_*aks 10

请注意,如果您选择运行本地网络服务器,则会产生安全风险.

在知道您的应用程序的同一台机器上运行的任何网页都可以使用Javascript向您的服务器发送请求,并且您没有简单可靠的方式来了解请求的来源.(不要相信referer标题)

谷歌桌面使用类似的方法,有几个真实的漏洞,允许任何网页读取磁盘上的任何文件.

有几种方法可以防止这种情况发生; 我建议要求每个请求都有一个auth密钥,该密钥是每台机器随机生成的(并在某个时候到期),您可以将其放入实际页面的源代码中.XHR保护可以防止恶意网站读取授权密钥,使其无能为力.


SLa*_*aks 2

在 Windows 中,您可以嵌入 IE ActiveX 控件,该控件使用与 IE 相同的渲染引擎。(这是一个优点和一个缺点)您可以ScriptObject在主机代码中设置该属性并在 Javascript 中访问它,以window.external执行 Javascript 无法执行的操作。

如果您运行本地网络服务器,则应用程序中可能有一个退出链接来终止网络服务器。