Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[WFS / OAPIF] Emit request headers of initial request when following …
…a redirect (#53011)
  • Loading branch information
rouault committed May 5, 2023
1 parent 0d90cbc commit 66fa7e7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/providers/wfs/qgsbasenetworkrequest.cpp
Expand Up @@ -201,11 +201,14 @@ bool QgsBaseNetworkRequest::sendGET( const QUrl &url, const QString &acceptHeade
QgsDebugMsgLevel( QStringLiteral( "Calling: %1" ).arg( modifiedUrl.toDisplayString( QUrl::EncodeSpaces ) ), 4 );

QNetworkRequest request( modifiedUrl );

mRequestHeaders = extraHeaders;
if ( !acceptHeader.isEmpty() )
{
request.setRawHeader( "Accept", acceptHeader.toUtf8() );
mRequestHeaders << QNetworkReply::RawHeaderPair( "Accept", acceptHeader.toUtf8() );
}
for ( const QNetworkReply::RawHeaderPair &headerPair : extraHeaders )

for ( const QNetworkReply::RawHeaderPair &headerPair : std::as_const( mRequestHeaders ) )
request.setRawHeader( headerPair.first, headerPair.second );

QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsBaseNetworkRequest" ) );
Expand Down Expand Up @@ -434,8 +437,11 @@ bool QgsBaseNetworkRequest::sendPOSTOrPUTOrPATCH( const QUrl &url, const QByteAr
logMessageIfEnabled();
return false;
}
request.setHeader( QNetworkRequest::ContentTypeHeader, contentTypeHeader );
for ( const QNetworkReply::RawHeaderPair &headerPair : extraHeaders )

mRequestHeaders = extraHeaders;
mRequestHeaders << QNetworkReply::RawHeaderPair( "Content-Type", contentTypeHeader.toUtf8() );

for ( const QNetworkReply::RawHeaderPair &headerPair : std::as_const( mRequestHeaders ) )
request.setRawHeader( headerPair.first, headerPair.second );

if ( !issueRequest( request, verb, &data, /*synchronous=*/true ) )
Expand Down Expand Up @@ -634,6 +640,9 @@ void QgsBaseNetworkRequest::replyFinished()
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, mForceRefresh ? QNetworkRequest::AlwaysNetwork : QNetworkRequest::PreferCache );
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );

for ( const QNetworkReply::RawHeaderPair &headerPair : std::as_const( mRequestHeaders ) )
request.setRawHeader( headerPair.first, headerPair.second );

mReply->deleteLater();
mReply = nullptr;

Expand Down
4 changes: 4 additions & 0 deletions src/providers/wfs/qgsbasenetworkrequest.h
Expand Up @@ -146,6 +146,10 @@ class QgsBaseNetworkRequest : public QObject
virtual int defaultExpirationInSec() { return 0; }

private:

//! Request headers
QList<QNetworkReply::RawHeaderPair> mRequestHeaders;

QString errorMessageFailedAuth();

void logMessageIfEnabled();
Expand Down

0 comments on commit 66fa7e7

Please sign in to comment.