导入证书时的电子加载页面

时间:2018-09-07 14:23:39

标签: electron

我正在使用https,如果使用的是自签名证书,我想提示用户是否要导入所需的证书。 (实际上,浏览器在加载没有可信证书的页面时会做同样的事情)

我发现电子中有一个函数{ "Active": false, "Name": "Your name" } 可以正常工作。我想在出现dialog.showCertificateTrustDialog([browserWindow, ]options, callback)的情况下使用它。

类似这样的东西:

certificate-error

但是我不知道如何进行app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { dialog.showCertificateTrustDialog({certificate:certificate, message: "some msg"}, () => { if (was certificate ok) { event.preventDefault(); callback(true); } else { callback(false); } } ); }); 部分

有可能吗?还是我必须例如再次加载页面才能显示它?如果我在导入证书后运行该应用程序,则可以正常运行。否则,我只会得到一个空白窗口。

感谢您的帮助,谢谢

1 个答案:

答案 0 :(得分:0)

当前,我已决定使用以下解决方案,但在我看来,它更像是一种黑客。在再次调用showCertificateTrustDialog函数之后,我尝试再次加载页面,但是如果再次抛出certificate-error,我将忽略它。我仍然对其他解决方案持开放态度,因为我不喜欢这个解决方案

let certificateErrorRetry = false;

app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
  certificateErrorRetry = !certificateErrorRetry;
  if (certificateErrorRetry) {
    const {dialog} = require('electron');
    dialog.showCertificateTrustDialog({certificate: certificate, message: "some msg" }, () => {
      myapp.win.loadURL(url);
    });
  }
  else { show some error }
});