Программа работает так: Когда в браузере заходим на какой либо сайт, используется прокси и подключается к моему серверу (qtcpserver). Далее сервер получает некие данные сайта на который пытаемся зайти. После получения информации необходимо чтобы мой сервер вернул какую-то инфу обратно браузеру, чтобы браузер отобразил загруженную страницу сайта. Т.е.
Загрузка какой-либо страницы в браузере -> отправка заголовка ответа на мой сервер -> отправка запроса сервером на сайт -> получение ответа от сайта -> отправка данных полученных от сайта обратно в браузер. И вот здесь существует две проблемы. Первая: При получении доступа к сайту http мне удается получить и заголовок моего запроса (GET ...) и заголовок ответа сайта. Но при попытке подключиться к https мой запрос на сайт выглядит примерно так:
CONNECT e.mail.ru:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0
Proxy-Connection: keep-alive
Connection: keep-alive
Host: e.mail.ru:443
QTcpSocket* clientSocket = (QTcpSocket*)sender();
socket_ = (QTcpSocket*)sender();
QString str;
str = clientSocket->readAll();
//Функция отправки запроса сайту
void QTCPServerClass::funcSiteRequest(QString str)
{
QNetworkRequest request(str);
QNetworkReply* reply= manager->get(request);
connect(reply,SIGNAL(finished()),this,SLOT(replyFinished()));
}
//Слот получения заголовков ответа
void QTCPServerClass::replyFinished()
{
QList<QByteArray> list; QString str;
QNetworkReply *reply= qobject_cast<QNetworkReply *>(sender());
if (reply->error() == QNetworkReply::NoError){
list.append(reply->rawHeaderList());
foreach(QByteArray head, list) {
str = str + head +":" + reply->rawHeader(head) + "\r\n";
}
} else{
// qDebug()<<reply->errorString();
}
}
}
QByteArray arrBlock;
arrBlock.append(str);//полученное содержимое страницы через manager.get()
socket_->write(arrBlock);
socket_->disconnect();