如何使用 QWebEngineView 忽略 SSL 证书错误

How to ignore SSL certificate errors with QWebEngineView

如何在 QWebEngineView? I found that QWebEnginePage has the virtual method certificateError 中通过 C++ 忽略和 enable/disable SSL 证书错误,但无法通过 QWebEngineView 访问它?

我现在的解决方案是派生自QWebEnginePage, overwrite the method certificateError and pass an instance of the derived class to QWebEngineView with a call of setPage。如果有人感兴趣,这里有一个例子。

webpage.h

#ifndef WEBPAGE_H
#define WEBPAGE_H

#include <QWebEnginePage>

class WebPage : public QWebEnginePage
{
    Q_OBJECT

public:
    explicit WebPage(QWidget *parent = 0);

protected:
    bool certificateError(const QWebEngineCertificateError &error) override;
};

#endif // WEBPAGE_H

webpage.cpp

#include "webpage.h"

WebPage::WebPage(QWidget *parent) :
    QWebEnginePage(parent)
{
}

bool WebPage::certificateError(const QWebEngineCertificateError &error)
{
    // TODO: conditional treatment
    return error.isOverridable();
}

用法:

auto webView = new QWebEngineView(this);
auto webPage = new WebPage(this);
webView->setPage(webPage);