Commit 9fb4b416 authored by Yutaka Hirano's avatar Yutaka Hirano Committed by Commit Bot

Reland "FetchManager should not set "referer" HTTP header"

This is a reland of bd27fde7

Original change's description:
> FetchManager should not set "referer" HTTP header
>
> Instead it should use ResourceRequest::SetReferrerString and
> ResourceRequest::SetReferrerPolicy.
>
> Bug: 863769
> Change-Id: I4de47bae9aa259ace5ffb5bbdd17d6cf423931d7
> Reviewed-on: https://chromium-review.googlesource.com/1203474
> Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
> Reviewed-by: Dominic Farolino <domfarolino@gmail.com>
> Cr-Commit-Position: refs/heads/master@{#589159}

Bug: 863769
Change-Id: Ie01801ef1ab7adec166832511539b19b707ab220
Tbr: domfarolino@gmail.com
Reviewed-on: https://chromium-review.googlesource.com/1212208Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589446}
parent fb4ec2b8
......@@ -858,27 +858,9 @@ void FetchManager::Loader::PerformHTTPFetch(ExceptionState& exception_state) {
request.SetUseStreamOnResponse(true);
request.SetExternalRequestStateFromRequestorAddressSpace(
execution_context_->GetSecurityContext().AddressSpace());
request.SetReferrerString(fetch_request_data_->ReferrerString());
request.SetReferrerPolicy(fetch_request_data_->GetReferrerPolicy());
// "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer|
// is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8
// encoded, otherwise, to HTTPRequest's header list.
//
// The following code also invokes "determine request's referrer" which is
// written in "Main fetch" operation.
const ReferrerPolicy referrer_policy =
fetch_request_data_->GetReferrerPolicy() == kReferrerPolicyDefault
? execution_context_->GetReferrerPolicy()
: fetch_request_data_->GetReferrerPolicy();
const String referrer_string =
fetch_request_data_->ReferrerString() == Referrer::ClientReferrerString()
? execution_context_->OutgoingReferrer()
: fetch_request_data_->ReferrerString();
// Note that generateReferrer generates |no-referrer| from |no-referrer|
// referrer string (i.e. String()).
// TODO(domfarolino): Can we use ResourceRequest's SetReferrerString() and
// SetReferrerPolicy() instead of calling SetHTTPReferrer()?
request.SetHTTPReferrer(SecurityPolicy::GenerateReferrer(
referrer_policy, fetch_request_data_->Url(), referrer_string));
request.SetSkipServiceWorker(is_isolated_world_);
if (fetch_request_data_->Keepalive()) {
......
......@@ -81,12 +81,6 @@ AtomicString CreateAccessControlRequestHeadersHeader(
const HTTPHeaderMap& headers) {
Vector<String> filtered_headers = CORS::CORSUnsafeRequestHeaderNames(headers);
// FetchManager may add a "referer" header.
// TODO(yhirano): Remove this.
auto it = filtered_headers.Find("referer");
if (it != kNotFound)
filtered_headers.EraseAt(it);
if (!filtered_headers.size())
return g_null_atom;
......@@ -170,9 +164,7 @@ ThreadableLoader::CreateAccessControlPreflightRequest(
preflight_request->SetFetchCredentialsMode(
network::mojom::FetchCredentialsMode::kOmit);
preflight_request->SetSkipServiceWorker(true);
// TODO(domfarolino): Use ReferrerString() once https://crbug.com/850813 is
// closed and we stop storing the referrer string as a `Referer` header.
preflight_request->SetReferrerString(request.HttpReferrer());
preflight_request->SetReferrerString(request.ReferrerString());
preflight_request->SetReferrerPolicy(request.GetReferrerPolicy());
if (request.IsExternalRequest()) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment