electron 如何替换服务器文件在电子?

rsaldnfx  于 2023-03-06  发布在  Electron
关注(0)|答案(1)|浏览(176)

我正在使用Electron + Pepper加载一个旧的浏览器游戏。游戏文件是https://example.com/game.swf。它从https://example.com/game.html页面加载,但我无法访问此页面。如何使electron在本地替换game.swf,以便game.html访问游戏的本地副本?由于CORS或其他原因,我无法重定向到另一个URL。
我搜索了每个地方,但没有找到解决方案。我尝试替换URL,尝试使用intersectFileProtocol和onBeforeRequest重定向,但没有任何效果。

yhuiod9q

yhuiod9q1#

这个代码对我有效:
创建一个缓冲协议拦截处理程序,在其中检查url,如果它指向你想要替换的文件,那么加载该文件,否则向原始站点发出https请求。

const https = require('https');

  mainWindow.webContents.session.protocol.interceptBufferProtocol("https", (req, callback) => {
    if (req.url.indexOf("hi.html") !== -1) {
      callback({
        statusCode: 200,
        data: readFileSync(__dirname + "/local.html"),
        mimeType: "text/html"
      })
    } else {
      https.request(req.method, {
        method: req.method,
        headers: req.headers,
      }, (res) => {
        let data = [];
        res.on('data', chunk => {
          data.push(chunk);
        });
        res.on('end', () => {
          callback({
            statusCode: res.statusCode,
            headers: res.headers,
            data: Buffer.concat(data)
          })
        })
      }).on('error', err => {
        console.log('Error: ', err.message);
      }).end()
    }
  })

相关问题