项目要在electron程序中嵌入其他网站,但是在iframe嵌入以后发现跨域报错
判断是因为服务器设置了X-Frame-Options导致,沟通了一下甲方,果然如此,并且无法修改安全策略
没办法,自己来吧
在初始化BrowserWindow
后添加以下代码
mainWindow.webContents.session.webRequest.onHeadersReceived({ urls: [ "*://*/*" ] },
(d, c)=>{
if(d.responseHeaders['X-Frame-Options']){
delete d.responseHeaders['X-Frame-Options'];
} else if(d.responseHeaders['x-frame-options']) {
delete d.responseHeaders['x-frame-options'];
}
c({cancel: false, responseHeaders: d.responseHeaders});
}
);
搞定收工
原理是electron在处理页面请求header的时候移除X-Frame-Options设置