在 Electron 中本地运行非内联 JS

Pri*_*Nom 6 javascript node.js content-security-policy electron

在本地开发时,我想将所有单独的 JS 脚本作为文件保存在另一个文件夹中。我能够做到这一点的唯一方法是我不声明该meta声明。但是,通过不声明它,我当然会收到警告。

电子安全警告(不安全的内容安全策略)此渲染器进程没有设置内容安全策略或启用了“不安全评估”的策略。这使此应用程序的用户面临不必要的安全风险。

有没有办法在不忽略或违反 CSP 的情况下在本地执行此操作?

Sud*_*amy 3

在渲染器中设置以下元标记。

<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-xxx or sha256-yyy' " />
Run Code Online (Sandbox Code Playgroud)

请查看我的 github 存储库electro-renderer-CSP-sample,其中包含内部和外部 js 文件的随机数和 SHA 方法的示例。

或者

您可以在创建主浏览器窗口时使用 webPreferences 中的预加载参数。在main.js中,

  mainWindow = new BrowserWindow({
    webPreferences: {
      nodeIntegration: false,
      preload: path.join(__dirname, 'preload.js')
    }
  })
Run Code Online (Sandbox Code Playgroud)

在 preload.js 中

        const remote = require("electron").remote;
// electron APIs
        window.appQuit = function() {
          remote.app.exit(0);
        };
// node modules
       window.notify= function notify(msg) {
       return require('node-notifier').notify(msg);
       };
// DOM can be manipulated from here (Refer 
// https://github.com/electron/electron-quick-start/blob/master/preload.js)
Run Code Online (Sandbox Code Playgroud)