diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-11-26 19:29:02 +0100 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-12-01 12:18:35 +0100 |
commit | 518cb95730dd1ac889cbe732fab11019085a5cd8 (patch) | |
tree | 871e9eef0ad6bb147fd3136001529b8f316bd22c /src/core/net | |
parent | f5800f41752c566957e269f51fe4109f64c68f01 (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.cpp | 27 |
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_) { |