gpt4 book ai didi

electron - electronic-quick-start,ipcMain,CSP在Javascript中阻止 'eval'

转载 作者:行者123 更新时间:2023-12-03 12:38:39 24 4
gpt4 key购买 nike

我克隆了electronic-quick-start演示,并测试了ipcMain函数。
按照文档在main.js中添加此文件

const { ipcMain } = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
console.log(arg) // print "ping"
event.reply('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
console.log(arg) // print "ping"
event.returnValue = 'pong'
})
在preload.js中
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // print "pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
console.log(arg) // print "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')
我无法添加renderer.js,因为它说
// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// No Node.js APIs are available in this process because
// `nodeIntegration` is turned off. Use `preload.js` to
// selectively enable features needed in the rendering
// process.
并且无法找到required(在renderer.js中)
问题是开发工具无法在preload.js中获得值(value)
ipcRenderer.on('asynchronous-reply', (event, arg) => {
console.log(arg) // print "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')
我的node.js终端可以获取'ping'字符串,这是开发工具的问题==>
screenshot

最佳答案

Electron 快速入门演示的index.html文件包含CSP规则:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
更改为:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-eval'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-eval'">
因为eval-expressions用于某处。是的,它“不安全”,但这只是演示。稍后,您可以理清所使用的“eval”构造并进行修复。
另外,您也可以删除上述两个元标记,以免在第一步遇到内容安全策略的麻烦。

关于electron - electronic-quick-start,ipcMain,CSP在Javascript中阻止 'eval',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64981255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com