diff options
Diffstat (limited to 'qutebrowser/browser/webengine/webenginetab.py')
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 3c113e55c..0d78324ec 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1516,11 +1516,22 @@ class WebEngineTab(browsertab.AbstractTab): url = error.url() self._insecure_hosts.add(url.host()) + # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-92009 + # self.url() is not available yet and the requested URL might not match the URL + # we get from the error - so we just apply a heuristic here. + assert self.data.last_navigation is not None + first_party_url = self.data.last_navigation.url + log.network.debug("Certificate error: {}".format(error)) + log.network.debug("First party URL: {}".format(first_party_url)) if error.is_overridable(): error.ignore = shared.ignore_certificate_error( - url, error, abort_on=[self.abort_questions]) + request_url=url, + first_party_url=first_party_url, + error=error, + abort_on=[self.abort_questions], + ) else: log.network.error("Non-overridable certificate error: " "{}".format(error)) @@ -1544,12 +1555,10 @@ class WebEngineTab(browsertab.AbstractTab): # We can't really know when to show an error page, as the error might # have happened when loading some resource. - # However, self.url() is not available yet and the requested URL - # might not match the URL we get from the error - so we just apply a - # heuristic here. - assert self.data.last_navigation is not None - if (show_non_overr_cert_error and - url.matches(self.data.last_navigation.url, QUrl.RemoveScheme)): + is_resource = ( + first_party_url.isValid() and + url.matches(first_party_url, QUrl.RemoveScheme)) + if show_non_overr_cert_error and is_resource: self._show_error_page(url, str(error)) @pyqtSlot() |