Visual C++ 2008 SP1 ile Windows 7'de Qt SDK 1.1.4'ün temiz yüklemesi; Ben Qt Creator kullanıyorum. Bu kod neden bazı web sayfalarını yüklemiyor?QWebView/Qt WebKit bazı SSL sayfalarını açmayacaktır; yönlendirmelere izin verilmiyor mu?
#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();
}
Bazı URL'ler neden çalışmıyor, bazıları da çalışmıyor?
Sanırım google.com/www.google.com özellikle şunları söylüyor; google.com normal olarak www.google.com adresine yönlendirir. Ve gmail.com, accounts.google.com adresine yönlendiriyor. WebKit güvenli sayfaların yeniden yönlendirilmesine izin vermiyor mu? Öyleyse, bunu nasıl düzeltebilirim? Bu arada, Qt SDK 1.1.4, OpenSSL'yi içermekte gibi görünmektedir; C: \ QtSDK \ Desktop \ Qt \ 4.7.4 \ msvc2008 \ bin \ ssleay32.dll adresindeki varlığını fark ettim. Ayrıca, sayfasının bazı sayfalarının da işe yaramadığını görüyoruz.
DÜZENLEME: İki daha fazla URL: Yine
b.load(QUrl("https://support.motionview3d.com/help/_media/images/directory.png")); // doesn't work
b.load(QUrl("https://mail.google.com")); // works
, diğer web tarayıcılarında bu çalışma cezası hem.
Ne dağınıklık? Burada sadece iki olasılık var gibi görünüyor: (1) HTTP spec yönlendirme veya diğer özel durumlarda kötü bir sertifikaya izin verir, ancak Qt bir hata vardır ve ilk etapta yeniden yönlendirmeyi reddeder ("çok sıkı"). Veya (2) Google yöneticileri bir hata yaptı, ancak İnternet Explorer, FireFox, Chrome ve diğer başlıca tarayıcıların ciddi bir güvenlik açığı olduğu için fark etmediler. Burada neler oluyor? –
Eh, Qt ortalama web tarayıcısından daha az SSL hatalarına toleranslı görünüyor.Gerçekten önemsediğim sunucudaki web yöneticisinin ara sertifikaları sunucuya yüklemediği ortaya çıkıyor: http://www.sslshopper.com/ssl-certificate-not-trusted-error.html (son seçeneğe bakın). –
Ayrıca bu hataları ui'de görüntülemek için '' 'example/network/securesocketclient''' ile birleştirmek de mümkündür. –