【问题标题】:electron - loading page when certificate is imported导入证书时的电子加载页面
【发布时间】:2018-09-12 16:45:11
【问题描述】:

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

我发现电子中有一个函数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);
            }
        }
    );
});

但我不知道如何处理was certificate ok 部分

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

感谢您的帮助,谢谢

【问题讨论】:

    标签: electron


    【解决方案1】:

    目前,我已决定使用以下解决方案,但在我看来更像是一个 hack。再次调用 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 }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 1970-01-01
      • 2016-01-12
      • 2017-03-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2016-07-13
      • 2021-06-26
      相关资源
      最近更新 更多