Прочитать заголовок 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']) .

Другие вопросы по тегам