summaryrefslogtreecommitdiffstats
path: root/src/core/net/network_delegate_qt.cpp
diff options
context:
space:
mode:
authorLeander Beernaert <leander.beernaert@qt.io>2019-05-20 11:05:51 +0200
committerLeander Beernaert <leander.beernaert@qt.io>2019-05-20 16:41:24 +0200
commit1a8e93c95de92f6a00bdf3768c5315dd032513c0 (patch)
treebd81ba43530ce5f2f0c416d23af0398f7d57f78f /src/core/net/network_delegate_qt.cpp
parente0f5df4c4a83a2dbe44a5ee42bb3b8e6ab0d851e (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/core/net/network_delegate_qt.cpp')
-rw-r--r--src/core/net/network_delegate_qt.cpp13
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;