summaryrefslogtreecommitdiffstats
path: root/src/core/net
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2020-11-26 19:29:02 +0100
committerKirill Burtsev <kirill.burtsev@qt.io>2020-12-01 12:18:35 +0100
commit518cb95730dd1ac889cbe732fab11019085a5cd8 (patch)
tree871e9eef0ad6bb147fd3136001529b8f316bd22c /src/core/net
parentf5800f41752c566957e269f51fe4109f64c68f01 (diff)
Set custom headers from QWebEngineUrlRequestInfo before triggering redirect
Fixes: QTBUG-88861 Change-Id: I7091aca70aaf87edf0b1e67ec3fa705a59c8192c Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/net')
-rw-r--r--src/core/net/proxying_url_loader_factory_qt.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp
index d63659d2d..7b478c12a 100644
--- a/src/core/net/proxying_url_loader_factory_qt.cpp
+++ b/src/core/net/proxying_url_loader_factory_qt.cpp
@@ -292,9 +292,20 @@ void InterceptedRequest::ContinueAfterIntercept()
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (request_info_.changed()) {
- if (request_info_.d_ptr->shouldBlockRequest)
+ QWebEngineUrlRequestInfoPrivate &info = *request_info_.d_ptr;
+ if (info.shouldBlockRequest)
return SendErrorAndCompleteImmediately(net::ERR_BLOCKED_BY_CLIENT);
- if (request_info_.d_ptr->shouldRedirectRequest) {
+
+ for (auto header = info.extraHeaders.constBegin(); header != info.extraHeaders.constEnd(); ++header) {
+ std::string h = header.key().toStdString();
+ if (base::LowerCaseEqualsASCII(h, "referer")) {
+ request_.referrer = GURL(header.value().toStdString());
+ } else {
+ request_.headers.SetHeader(h, header.value().toStdString());
+ }
+ }
+
+ if (info.shouldRedirectRequest) {
net::URLRequest::FirstPartyURLPolicy first_party_url_policy =
request_.update_first_party_url_on_redirect ? net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT
: net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
@@ -316,18 +327,6 @@ void InterceptedRequest::ContinueAfterIntercept()
target_client_->OnReceiveRedirect(redirectInfo, std::move(current_response_));
return;
}
-
- if (!request_info_.d_ptr->extraHeaders.isEmpty()) {
- auto end = request_info_.d_ptr->extraHeaders.constEnd();
- for (auto header = request_info_.d_ptr->extraHeaders.constBegin(); header != end; ++header) {
- std::string h = header.key().toStdString();
- if (base::LowerCaseEqualsASCII(h, "referer")) {
- request_.referrer = GURL(header.value().toStdString());
- } else {
- request_.headers.SetHeader(h, header.value().toStdString());
- }
- }
- }
}
if (!target_loader_ && target_factory_) {