遵循API文档,我不明白如何为我的Electron应用程序的渲染器定义Content-Security-Policy HTTP Header.我总是在DevTools中收到警告.
我试过了:
1)盲目地复制/粘贴API文档中的代码:
app.on('ready', () => {
const {session} = require('electron')
session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
callback({responseHeaders: `default-src 'self'`})
})
win = new BrowserWindow(...)
win.loadUrl(...)
}
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,我不明白为什么字符串中缺少"Content-Security-Policy:".但添加它不会改变任何东西)
2)使用相同的代码修改渲染器的会话:
win = new BrowserWindow(...)
win.loadUrl(...)
const ses = win.webContents.session;
ses.webRequest.onHeadersReceived((details, callback) => {
callback({responseHeaders: `default-src 'self'`})
})
Run Code Online (Sandbox Code Playgroud)
3)为渲染器添加额外的标头:
win = new BrowserWindow(...)
win.loadURL(`file://${__dirname}/renderer.html`,{
extraHeaders: `Content-Security-Policy: default-src 'self'`
});
Run Code Online (Sandbox Code Playgroud)
...
唯一有效的方法是在渲染器HTML文件中使用元标记:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'>
Run Code Online (Sandbox Code Playgroud)