我和我的 friend 几乎完成了 our project .它基本上是 Spotify 的一个正在播放/迷你播放器应用程序。当我检查渲染进程控制台时,我又收到一个警告,我想清除。它是关于 worldSafeExecuteJavaScript
是真的以及它是如何不安全的。我进一步研究了它,结果发现我也需要打开 contextIsolation
。我进行了更多研究,发现我无法在渲染过程中使用 require
。我试着查找文档,但我很困惑。从长远来看,我们希望确保我们的应用程序安全,尤其是因为我在上大学,而我的 friend 在学校工作时可能会很忙;并且由于 contextIsolation
在 Electron 12 中默认为真。
在我们的渲染进程 javascript 中,我们只需要 require jQuery 和 ipcRenderer。我们如何合并 contextBridge
(我想这就是它的名字),以将 jQuery 和 ipcRenderer 导入我们的 javascript 以进行渲染过程?
最佳答案
我通过使用 contextBridge
让我的应用程序与 contextIsolation
一起工作。这是我的 main.js
webPreferences
和预加载脚本:
webPreferences: {
worldSafeExecuteJavaScript: true,
contextIsolation: true,
preload: path.join(__dirname, "preload.js")
},
这里是 preload.js
来导入 ipcRenderer
:
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld(
'ipcRenderer',
{
/*
Important note: This will get it working,
but I'm going to make multiple methods for
each time I'm using this to heighten security.
https://www.electronjs.org/docs/tutorial/context-isolation#security-considerations
*/
send: (channel, arg) => ipcRenderer.send(channel, arg),
on: (event, data) => ipcRenderer.on(event, data)
}
)
To import jQuery ,我只是用 index.html
导入它:
<head>
<meta charset="UTF-8">
<title>Gemini</title>
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="macos.css">
<script type="text/javascript" src="node_modules/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/all.css">
</head>
我不确定通过 HTML 导入 jQuery 是否更安全。
关于javascript - 我应该在我的 Electron 应用程序中使用上下文隔离吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63826089/