使用Visual C++ 2008 SP1在Windows 7上全新安裝Qt SDK 1.1.4;我正在使用Qt Creator。爲什麼此代碼不加載某些網頁?QWebView/Qt WebKit不會打開一些SSL頁面;重定向不允許?
#include <QtGui/QApplication>
#include <QtWebKit/QWebView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWebView b;
b.load(QUrl("https://gmail.com")); // doesn't work
//b.load(QUrl("https://accounts.google.com")); // works
//b.load(QUrl("https://google.com")); // doesn't work
//b.load(QUrl("https://www.google.com")); // works
b.show();
return a.exec();
}
爲什麼一些URL不起作用,其他人呢?
我認爲google.com/www.google.com特別講述; google.com通常會重定向到www.google.com。而gmail.com正在重定向到accounts.google.com。 WebKit是否不允許安全頁面重定向?如果是這樣,如何解決這個問題?
順便說一句,Qt SDK 1.1.4似乎包含OpenSSL;我注意到它存在於C:\ QtSDK \ Desktop \ Qt \ 4.7.4 \ msvc2008 \ bin \ ssleay32.dll中。另外請注意,某些網頁似乎可以正常工作,而不是其他網頁。
編輯:兩個以上的網址:
b.load(QUrl("https://support.motionview3d.com/help/_media/images/directory.png")); // doesn't work
b.load(QUrl("https://mail.google.com")); // works
再次,兩者的其他網絡瀏覽器,這些做工精細。
什麼混亂?似乎這裏只有兩種可能:(1)HTTP規範允許在重定向或其他特殊情況下使用錯誤的證書,但Qt有一個錯誤,並且首先拒絕訪問重定向(它「太嚴格」了)。或者(2)谷歌管理員犯了一個錯誤,但沒有注意到,因爲Internet Explorer,FireFox,Chrome和其他主流瀏覽器存在嚴重的安全漏洞。這裏發生了什麼? –
好吧,似乎Qt比普通的Web瀏覽器更不容忍SSL錯誤。事實證明,我真正關心的服務器上的網站管理員沒有在服務器上安裝中間證書:http://www.sslshopper.com/ssl-certificate-not-trusted-error.html(請參見上一個選項)。 –
也可以將它與'examples/network/securesocketclient''結合在一起顯示這些錯誤。 –