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
}

  

 

posted @ 2023-01-13 16:54  zyip  阅读(1756)  评论(0)    收藏  举报