首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制QWebView使用SSLv3?

如何强制QWebView使用SSLv3?
EN

Stack Overflow用户
提问于 2012-08-31 13:40:11
回答 1查看 1.6K关注 0票数 2

有一个web服务器不支持SSLv2 HELO,因此我必须强制QWebView执行SSLv3 HELO。不幸的是,以下内容不起作用:

代码语言:javascript
复制
QList ciphers = QSslSocket::supportedCiphers();
for (int i = ciphers.count() - 1; i >= 0; i--){
    QSslCipher cipher = ciphers.at(i);
    QSsl::SslProtocol protocol = cipher.protocol();
    if (protocol == QSsl::SslV2){
        ciphers.removeAt(i);
    }
}
QSslSocket::setDefaultCiphers(ciphers);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-07 21:49:02

通过覆盖QNetworkAccessManager虚拟函数,您可以强制它使用特定的createRequest协议:

代码语言:javascript
复制
MyNetworkAccessManager::MyNetworkAccessManager(
               QNetworkAccessManager *oldManager, QObject *parent /*= 0*/)
    : QNetworkAccessManager(parent)
{
    setCache(oldManager->cache());
    setCookieJar(oldManager->cookieJar());
    setProxy(oldManager->proxy());
    setProxyFactory(oldManager->proxyFactory());
}


QNetworkReply* MyNetworkAccessManager::createRequest(
         QNetworkAccessManager::Operation op, const QNetworkRequest &req, 
         QIODevice *device)
{
    QSslConfiguration sslConfig = req.sslConfiguration();
    sslConfig.setProtocol(QSsl::SslV3);
    req.setSslConfiguration(sslConfig);
    return QNetworkAccessManager::createRequest(op, req, outgoingData);
}


view = new QWebView(this);
QNetworkAccessManager *oldManager = view->page()->networkAccessManager();
MyNetworkAccessManager *newManager = new MyNetworkAccessManager(oldManager, this);
view->page()->setNetworkAccessManager(newManager);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12209489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档