我一直在Qt中使用SSL,在这里我需要设置特定的协议(而不是默认的“安全协议”)。看起来像这样:

QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_0);
QSslConfiguration::setDefaultConfiguration(config);


但这使我不适应以这种全局方式设置协议,而不是在QWebPageQWebView之类的协议上进行设置。我是否遗漏了一些明显的东西,或者这真的是最好的方法吗?我知道我可以在SSL套接字上进行设置,但是我正在使用QtWebKit,并且无权访问各个套接字。

最佳答案

我发现这样做的方法是扩展QNetworkAccessManager并在createRequest中设置协议:

class NetworkAccessManager : public QNetworkAccessManager
{
    Q_OBJECT
public:
    explicit NetworkAccessManager(QObject *parent = 0);

protected:
    virtual QNetworkReply * createRequest(Operation operation, const QNetworkRequest & request, QIODevice * outgoingData = 0) {
        // I have no idea why request is const, but I need to change it
        QNetworkRequest notConstRequest = request;
        QSslConfiguration conf = notConstRequest.sslConfiguration();
        conf.setProtocol(QSsl::TlsV1_0);
        notConstRequest.setSslConfiguration(conf);
        return QNetworkAccessManager::createRequest(operation, notConstRequest, outgoingData);
    }
};


然后,可以使用QWebpage在我的setNetworkAccessManager中进行设置。

关于qt - 这是使用QWebPage设置SSL协议(protocol)的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11941630/

10-11 22:49
查看更多