electron 跨域
第一类方法,修改主进程
//允许跨域请求1 mainWindow.webContents.session.webRequest.onBeforeSendHeaders( (details, callback) => { callback({ requestHeaders: { Origin: '*', ...details.requestHeaders } }); }, ) mainWindow.webContents.session.webRequest.onHeadersReceived((details, callback) => { callback({ responseHeaders: { 'Access-Control-Allow-Origin': ['*'], ...details.responseHeaders, }, }); })
//允许跨域2 //创建窗口 const mainWindow = new BrowserWindow({ frame: false, webPreferences: { nodeIntegration:true, enableRemoteModule:true, contextIsolation:false, webSecurity: false //关闭安全检查, 允许跨域, 不推荐 } })
//允许跨域3 渲染进程 async function req2 (url, param) { const myPromise = new Promise((resolve, reject) => { const {net} = window.require('@electron/remote') const request = net.request(url) request.on('response', (response) => { // console.log(`**statusCode:${response.statusCode}`); // console.log(`**header:${JSON.stringify(response.headers)}`); response.on("data", (data)=>{ resolve(data.toString()) // console.log("接收到数据:", chunk.toString()); }) response.on('end', (a,b,c) => { console.log("结束接收到数据:") reject('error') }) }) request.end() }) return myPromise }