【问题标题】:Access Native Resources in Electron App在 Electron App 中访问本机资源
【发布时间】:2017-07-19 21:02:30
【问题描述】:

我目前正在为即将到来的项目评估 Electron。也许我的问题对于使用过 Electron 的人来说是微不足道的。但是,我在文档中找不到答案,或者可能没有完全掌握这个概念。

我想要一个网络应用程序,用户可以通过浏览器访问,如果他们选择或从本机应用程序访问,如果他们想使用连接到他们的电脑的 USB 设备(在本例中为信用卡读卡器)。所以,main.js 文件会像这样打开远程 Web 应用程序

  win = new BrowserWindow({width: 800, height: 600})

  // and load the index.html of the app.
  win.loadURL('http://www.example.com/login.html')

如果页面是远程的还是本地的,访问本地资源(文件、端口等)有什么不同吗?换句话说,您仍然可以从由 Electron 包装的远程托管 Web 应用程序访问 USB 端口吗?就好像文件是本地的一样,就像安装的本机 Electron 应用程序一样?我认为它会加载与本地相同的远程页面,但不确定 ipc 是否仍然可以工作。

【问题讨论】:

    标签: electron


    【解决方案1】:

    要访问设备上的本机资源,您需要运行电子 BrowserWindow 并启用 nodeIntegration。这是默认设置,但在将内容从 Web 加载到启用的节点 BrowserWindow 时,security implications 会很大。如果您的站点受到 XSS 攻击,您的所有客户端 PC 都将对远程代码执行开放。

    因此,您应该使用 API 构建后端服务,然后在网站上托管前端并在应用中托管分布式版本。您仍然可以使用相同的代码构建两者。

    【讨论】:

    • 能否详细介绍一下后端服务?无论如何,我们都会构建一系列 Web 服务。我认为您的意思是后端服务会限制曝光,在这种情况下,只允许使用 USB 方法?
    • 后端服务会将数据从服务器/数据库转移到客户端,从网站或电子应用程序加载到任何浏览器中。如果您的 API 不发送 HTML 或 JavaScript,那么坏人在客户端机器上调用本机代码的方法就更少了
    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多