Прочитать заголовок http в qt webengine
Я хочу перехватить ответ сервера http в демонстрационном браузере qt и проверить поля заголовка. Как реализовать это с помощью qt webengine? Я также видел QWebEngineUrlRequestInterceptor, но используя этот класс, мы не можем прочитать поля заголовка http.
1 ответ
Думаю, это невозможно. Вы можете использовать QWebEngineUrlRequestInterceptor для перехвата ваших запросов. Здесь я добавляю токен-носитель для всех запросов, но я думаю, что невозможно прочитать заголовки
void customInterceptor ::interceptRequest(QWebEngineUrlRequestInfo &info)
{
info.setHttpHeader("Authorization", ("Bearer " + m_token).toLocal8Bit());
info.setHttpHeader("accept-language", Translator::instance()->getCurrentLang().toLocal8Bit());
}
Вам нужно запустить браузер с удаленной отладкой, чтобы включить инструменты разработчика Chrome: установите 'QTWEBENGINE_REMOTE_DEBUGGING' = порт в среде QT. после этого из другого экземпляра qtwebengine подключитесь к порту localhost:, после чего вы сможете использовать все инструменты chromium dev, отслеживать / манипулировать всем сетевым трафиком.
Если вам не нужна визуализация, тогда вам нужно сделать свой собственный клиент для протокола Chromium Dev Tools (у них довольно хорошие руководства) . Соберите все ответы так, как вы предпочитаете, в ответах ищите method='Network.responseReceived' с доступным селектором (например, response['params']['response']['url']), тогда вы будете иметь в себе ответный ответ ['params']['requestId'], с requestId вы можете сделать Network.getResponseBody(requestId=response['params']['requestId']) .