发送自定义标头与qtwebkit请求

7
我正在使用PyQt4和QtWebKit进行一些工作,在网页请求中需要发送自定义的“Host”标头以及标准HTTP请求。我没有看到任何添加自定义标头的选项,但这对我来说都是新的,所以我希望我错过了什么。我在这里寻找答案:http://doc.qt.digia.com/4.6/qwebsettings.html。如果您有任何建议,将不胜感激。
2个回答

11

您可以在发送的QNetworkRequest上设置标头:

QNetworkRequest request;
request.setUrl(QUrl("http://qt.nokia.com"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

要在加载页面时使用自定义请求,请使用重载的load函数:

myWebView->load(request);

这会覆盖所有默认标题吗,还是只会添加和替换现有的标题? - lennysan
该行为取决于所使用的Web服务器。当服务器支持多个(虚拟)主机时,必须使用“host”头来确定请求应发送到哪个虚拟主机。 - Kaleb Pederson
我正在使用一个Web应用程序,它可以允许特定的User-Agent,并且我的代码和用户代理没有显示任何效果。 - tbhaxor

3

如果您想应用于QtWebKit发出的所有请求,您可以子类化QNetworkAccessManager并重新实现其createRequest()函数以相应地修改标头。


请问如果createRequest()接受QNetworkRequest的const引用,该如何实现呢?我想应该调用相应的QNetworkRequest的setHeader()或setRawHeader()方法。 - NuPagadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接