diff options
author | Leander Beernaert <leander.beernaert@qt.io> | 2019-05-20 11:05:51 +0200 |
---|---|---|
committer | Leander Beernaert <leander.beernaert@qt.io> | 2019-05-20 16:41:24 +0200 |
commit | 1a8e93c95de92f6a00bdf3768c5315dd032513c0 (patch) | |
tree | bd81ba43530ce5f2f0c416d23af0398f7d57f78f /src | |
parent | e0f5df4c4a83a2dbe44a5ee42bb3b8e6ab0d851e (diff) |
Referrer HTTP Header no longer ignored when set via RequestInterceptor
Make sure the HTTP referer is properly placed on a request when it's set
via the QWebEngineUrlRequestInterceptor.
Added test case to catch future incidents.
Fixes: QTBUG-60203
Change-Id: Ida2f713a7352c3199fc9f8e15b5d8350d50afdda
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/net/network_delegate_qt.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/core/net/network_delegate_qt.cpp b/src/core/net/network_delegate_qt.cpp index 1441ec336..f6202cf1b 100644 --- a/src/core/net/network_delegate_qt.cpp +++ b/src/core/net/network_delegate_qt.cpp @@ -252,15 +252,22 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, net::Complet if (!infoPrivate->extraHeaders.isEmpty()) { auto end = infoPrivate->extraHeaders.constEnd(); - for (auto header = infoPrivate->extraHeaders.constBegin(); header != end; ++header) - request->SetExtraRequestHeaderByName(header.key().toStdString(), header.value().toStdString(), /* overwrite */ true); + for (auto header = infoPrivate->extraHeaders.constBegin(); header != end; ++header) { + std::string h = header.key().toStdString(); + if (base::LowerCaseEqualsASCII(h, "referer")) { + request->SetReferrer(header.value().toStdString()); + } else { + request->SetExtraRequestHeaderByName(h, header.value().toStdString(), /* overwrite */ true); + } + } } if (result != net::OK) return result; } - } else + } else { m_profileIOData->releaseInterceptor(); + } if (!resourceInfo) return net::OK; |