J'ai une application qui fonctionne comme un proxy en utilisant QTcpSocket pour intercepter les requêtes HTTP. J'essaie d'étendre cela à HTTPS, mais il semble que ça ne fonctionne pas comme je l'avais prévu. Utiliser QHttp n'est pas possible pour moi en raison de l'unicité de l'application.Qt4 QSslSocket triggers HTTP 406 responseq
Actuellement, j'ai quelque chose comme ce qui suit:
serverConnection = new QTcpSocket();
serverConnection->setProxy(proxy);
serverConnection->connectToHost(url_hostname, url_port);
serverConnection->write(request.toAscii());
connect(serverConnection, SIGNAL(readyRead()), this, SLOT(readServerData()), Qt::DirectConnection);
J'ai essayé de faire quelque chose de tout à fait similaire en utilisant QSslSocket, mais malheureusement le résultat est pas ce que je pensais.
serverSConnection = new QSslSocket();
serverSConnection->connectToHostEncrypted(url_hostname, url_port);
if (!serverSConnection->waitForEncrypted()) {
qDebug() << "waitForEncrypted failed";
}
serverSConnection->write(request.toAscii());
connect(serverSConnection, SIGNAL(readyRead()), this, SLOT(readSServerData()), Qt::DirectConnection);
Utilisation du QSslSocket faire la demande semble déclencher: HTTP/1.1 406 Non acceptable
La demande que je vous envoie par ressemble à quelque chose le long des lignes des éléments suivants:
Received Request: "CONNECT www.somesslhost.com:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13
Proxy-Connection: keep-alive
Host: www.somesslhost.com
Y at-il quelque chose de spécial à propos de l'envoi d'une requête HTTPS via mon application à l'aide de QSslSocket qui me manque?
Le dernier extrait est-il la demande que votre application envoie au serveur de destination OU celle que votre navigateur envoie à l'application? –
Le dernier extrait est la demande que j'envoie au serveur de destination. – Michael