使用Express Server作为HTTPS请求的电子应用程序代理

时间:2018-10-07 19:14:04

标签: node.js express electron

我正在使用session.setProxy通过我的基本Express服务器路由每个请求。

我想加载网页并将页面内容替换为自己的内容。

如果我加载http url,则会加载来自快递服务器的内容,但是如果我使用https,则该应用程序只是空白。

这是我的电子应用程序的main.js:

const electron = require('electron')
const { app, BrowserWindow } = electron
var win;

app.on('ready', initwindow);

function initwindow() {
    win = new BrowserWindow({show:true});

    win.webContents.session.setProxy({
        proxyRules: 'https://xxx',
    }, () => {
        win.loadURL('https://www.google.com/');
    });
}

这是我的快递服务器:

const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');

const app = express();

const credentials = {
    key: fs.readFileSync('/etc/letsencrypt/live/xxx/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/xxx/fullchain.pem'),
};

app.get('/', function(req, res) {
    res.send('Hello world')
})

const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);

httpServer.listen(80, () => {
    console.log('HTTP Server running on port 80');
});

httpsServer.listen(443, () => {
    console.log('HTTPS Server running on port 443');
});

例如,如果我使用win.loadURL('http://www.google.com/');,则显示“ Hello world”,但是如果我使用win.loadURL('https://www.google.com/');,则电子应用只是白色。

服务器上是否缺少某些内容?或者我试图做些什么?

0 个答案:

没有答案