问题如下:在我的Qt应用程序中,我有一个QWebView,用于加载HTTPS页面。
我的开发机器上的一切都运行正常,所以我现在正试图让它在测试机器上运行。我运行了应用程序,但页面没有加载(QWebView是空白的)。经过大量调试后,我发现问题是出现了SSL错误,并且触发了sslErrors()信号。
这是我的sslErrors()处理代码:
void blah::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) {
foreach(QSslError error, errors) {
qDebug() << error.errorString() << endl;
}
reply->ignoreSslErrors();
}
以上代码打印的唯一内容是:
"No error"
所以没有错误,但除非我调用reply->ignoreSslErrors()
,否则页面不会加载(在测试计算机上,在我的开发者计算机上没有报告错误)。咦?这是一个错误吗?
如果我确定它是“无错误”类型,是否可以安全地忽略错误?
答案 0 :(得分:1)
您可能会遇到QTBUG-28343,这是由于您的Qt编译版本与您正在运行的版本之间的openssl中的二进制不兼容造成的。这将在Qt 4.8.5中修复。
http://lists.qt-project.org/pipermail/announce/2013-January/000020.html https://bugreports.qt-project.org/browse/QTBUG-28343
答案 1 :(得分:0)
QSslSocket构建NoError SslError only when translating an OpenSSL X509_V_OK
error。
OpenSSL documentation reports:
如果未显示对等证书,则返回的结果代码为 X509_V_OK。这是因为没有发生验证错误 但并不表示成功。
您应该使用tcpdump或类似工具来检查证书是否在对等体之间正确交换。