小编Ano*_*zer的帖子

在Electron App中定义CSP HTTP标头

遵循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)

javascript content-security-policy electron

25
推荐指数
1
解决办法
4437
查看次数