如何从QT中的http请求中删除Authorization标头

时间:2015-11-05 11:57:47

标签: c++ qt http-headers httprequest

我想从我的GET请求中删除'授权:'标头。 QT默认添加它。

请求的样本 -

获取https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP / 1.1

授权:基本Og ==

User-Agent:Mozilla / 5.0(Linux)myapp / 1.2.1

连接:Keep-Alive

Accept-Encoding:gzip,deflate

接受语言:en-US,*

示例代码 -

QNetworkAccessManager* mgr = new QNetworkAccessManager();
QNetworkRequest req;
req.setUrl(QUrl("sampleURL") );
mgr->get(req);

结果应如下(没有授权标题) -

获取https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP / 1.1

User-Agent:Mozilla / 5.0(Linux)myapp / 1.2.1

连接:Keep-Alive

Accept-Encoding:gzip,deflate

接受语言:en-US,*

可以使用setHeader,setRawHeader等API,但无法完全删除标题。

1 个答案:

答案 0 :(得分:0)

QT似乎通过信号/插槽系统自动处理身份验证,与标题分开,因此您不必考虑它。

您是否正在处理来自NetworkManager的authenticationRequired(QNetworkReply * reply,QAuthenticator * authenticator)信号。如果它在身份验证请求中给出了误报,您可以通过重置信号中的身份验证器来解决这个问题。对不起,这不是一个肯定的答案,但请告诉我它是否有效!

  

只要最终服务器请求身份验证,就会发出此信号   在它提供所请求的内容之前。插槽连接到此   信号应该填写内容的凭证(可以是   通过在验证器中检查答复对象来确定   对象

     

QNetworkAccessManager将在内部和将来缓存凭据   如果服务器再次需要身份验证,则发送相同的值,   不发出authenticationRequired()信号。如果它拒绝   凭证,这个信号将再次发出。

     

注意:无法使用QueuedConnection连接到此   信号,因为如果验证器还没有连接将失败   信号返回时填入新信息。

     

另请参阅proxyAuthenticationRequired()。