1

我想在 qt 演示浏览器中捕获服务器 http 响应并检查标头字段。如何使用 qt webengine 实现这一点?我还看到了 QWebEngineUrlRequestInterceptor 但是使用这个类我们无法读取 http 标头字段。

4

2 回答 2

0

您需要使用远程调试运行浏览器以启用 chrome 开发工具:在 QT 环境中设置 'QTWEBENGINE_REMOTE_DEBUGGING' = port 。之后从其他 qtwebengine 实例连接到 localhost:port ,然后您可以使用所有 chromium 开发工具,监控/操作所有网络流量。

如果您不需要可视化,则需要为 chromium 开发工具协议制作自己的客户端(他们有很好的手册)。以您喜欢的方式收集所有回复,在回复中查找 method='Network.responseReceived' ,并使用可用的选择器(例如 response['params']['response']['url'] ),然后您将拥有response response['params']['requestId'] ,使用 requestId 你可以做 Network.getResponseBody(requestId=response['params']['requestId']) 。

于 2018-03-23T11:04:44.670 回答
0

我认为是不可能的。您可以使用 QWebEngineUrlRequestInterceptor 来拦截您的请求。在这里,我为所有请求添加了一个不记名令牌,但我认为不可能读取标头

    void customInterceptor ::interceptRequest(QWebEngineUrlRequestInfo &info)
{
  info.setHttpHeader("Authorization", ("Bearer " + m_token).toLocal8Bit());
  info.setHttpHeader("accept-language", Translator::instance()->getCurrentLang().toLocal8Bit());
}
于 2019-12-17T14:56:48.440 回答