javascript - 在 Electron 本地运行非内联 JS
问题描述
在本地开发时,我想将所有单独的 JS 脚本作为文件粘贴在另一个文件夹中。我能够做到这一点的唯一方法是如果我不声明该meta
声明。但是,如果不声明它,我当然会收到警告。
Electron 安全警告(不安全的 Content-Security-Policy) 此渲染器进程没有设置内容安全策略或启用了“unsafe-eval”的策略。这会使该应用程序的用户面临不必要的安全风险。
有没有办法在不忽略或违反 CSP 的情况下在本地进行?
解决方案
在渲染器中设置以下元标记。
<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-xxx or sha256-yyy' " />
请查看我的 github repo electron-renderer-CSP-sample,其中包含用于内部和外部 js 文件的 nonce 和 SHA 方法的示例。
或者
您可以在创建主 BrowserWindow 时使用 webPreferences 中的 preload 参数。在 main.js 中,
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false,
preload: path.join(__dirname, 'preload.js')
}
})
在 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)
推荐阅读
- stanford-nlp - 斯坦福命名实体识别器 (NER) 是否支持阿拉伯语?
- java - JUnit AssertEquals 失败
- php - 如何通过添加时间偏移值在php中使用纪元时间
- r - 用 purrr 创建新变量(怎么做?)
- c# - ASP.NET Core 将数据从表发送到模态
- selenium - docker selenium远程服务器如何阻止或将ips列入白名单
- python - 使用 python regex 避免引号内的模式
- sql - 检查日期是否与同一张表中的日期重叠
- angular - Angular 6 - 登录注册用户时返回错误 - 我该如何解决?
- c# - 我应该如何在另一个表单的面板中顺利打开一个表单