アカウント作ったのだし、なんか書きましょうかね。
ElectronのBrowserWindow
や<webview>
でhttpsのURLを読み込む時に証明書の検証でエラーがある場合、Electronは何もせずそのまま通信失敗となります。これではアプリ内ブラウザのような機能としては使い難いので、適切にエラー処理をする必要があります。
エラーの発生時にはapp
モジュールやwebContents
のcertificate-error
イベントが発生します。そこでevent.preventDefault()
で元の動作を止め、callback(true)
を呼び出すことで証明書エラーを無視して通信を続行することができます。
app.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
event.preventDefault();
callback(true);
});
上のコードのように問答無用でエラーを無視してもいいですが、ユーザーにエラーを無視するか確認させたいのであれば以下のようにダイアログを表示し、callback()
を非同期で呼び出すことができます。
app.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
event.preventDefault();
electron.dialog.showMessageBox(mainWindow, {
title: 'Certificate error',
message: `Do you trust certificate from "${certificate.issuerName}"?`,
detail: `URL: ${url}\nError: ${error}`,
type: 'warning',
buttons: [
'Yes',
'No'
],
cancelId: 1
}, function(response) {
if (response === 0) {
callback(true);
}
else {
callback(false);
}
});
});