электрон - загрузка страницы при импорте сертификата - PullRequest
0 голосов
/ 07 сентября 2018

Я использую 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 часть

Возможно ли это? Или мне нужно, например, снова загрузить страницу, чтобы показать ее? Если я запускаю приложение, когда сертификат уже импортирован, он работает просто отлично. В противном случае я получаю только пустое окно.

Любая помощь приветствуется, спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

В настоящее время я решил использовать следующее решение, но оно мне кажется больше похожим на взлом. Я пытаюсь загрузить страницу снова после повторного вызова функции 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 }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...