Revert 90354 - Revert 90352 - Move Referer header to extra_headers field
Reapply http://codereview.chromium.org/6995064 after fixing the chrome_frame_net_tests.
BUG=no
TEST=no
Review URL: http://codereview.chromium.org/7230009
[email protected]
Review URL: http://codereview.chromium.org/7236031
[email protected]
Review URL: http://codereview.chromium.org/7264017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90548 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index 8b06a3b..d7a65e2 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -695,13 +695,6 @@
request_headers_.SetHeader(HttpRequestHeaders::kConnection, "keep-alive");
}
- // Our consumer should have made sure that this is a safe referrer. See for
- // instance WebCore::FrameLoader::HideReferrer.
- if (request_->referrer.is_valid()) {
- request_headers_.SetHeader(HttpRequestHeaders::kReferer,
- request_->referrer.spec());
- }
-
// Add a content length header?
if (request_body_.get()) {
if (request_body_->is_chunked()) {
@@ -736,20 +729,7 @@
auth_controllers_[HttpAuth::AUTH_SERVER]->AddAuthorizationHeader(
&request_headers_);
- // Headers that will be stripped from request_->extra_headers to prevent,
- // e.g., plugins from overriding headers that are controlled using other
- // means. Otherwise a plugin could set a referrer although sending the
- // referrer is inhibited.
- // TODO(jochen): check whether also other headers should be stripped.
- static const char* const kExtraHeadersToBeStripped[] = {
- "Referer"
- };
-
- HttpRequestHeaders stripped_extra_headers;
- stripped_extra_headers.CopyFrom(request_->extra_headers);
- for (size_t i = 0; i < arraysize(kExtraHeadersToBeStripped); ++i)
- stripped_extra_headers.RemoveHeader(kExtraHeadersToBeStripped[i]);
- request_headers_.MergeFrom(stripped_extra_headers);
+ request_headers_.MergeFrom(request_->extra_headers);
}
int HttpNetworkTransaction::DoBuildRequest() {
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 45b3d79..65d699eb8 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -4910,7 +4910,8 @@
request.method = "GET";
request.url = GURL("http://www.google.com/");
request.load_flags = 0;
- request.referrer = GURL("http://the.previous.site.com/");
+ request.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
+ "http://the.previous.site.com/");
SessionDependencies session_deps;
scoped_ptr<HttpTransaction> trans(
@@ -5187,6 +5188,7 @@
MockWrite("GET / HTTP/1.1\r\n"
"Host: www.google.com\r\n"
"Connection: keep-alive\r\n"
+ "referer: www.foo.com\r\n"
"hEllo: Kitty\r\n"
"FoO: bar\r\n\r\n"),
};
@@ -5757,8 +5759,9 @@
// Issue a request, containing an HTTP referrer.
HttpRequestInfo request;
request.method = "GET";
- request.referrer = referrer;
request.url = GURL("http://www.google.com/");
+ request.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
+ referrer.spec());
SessionDependencies session_deps;
scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
diff --git a/net/http/http_request_info.h b/net/http/http_request_info.h
index 96c47c0..c368685 100644
--- a/net/http/http_request_info.h
+++ b/net/http/http_request_info.h
@@ -33,9 +33,6 @@
// The requested URL.
GURL url;
- // The referring URL (if any).
- GURL referrer;
-
// The method to use (GET, POST, etc.).
std::string method;
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc
index a155609c..52dfa9f 100644
--- a/net/http/http_stream_factory_impl_job.cc
+++ b/net/http/http_stream_factory_impl_job.cc
@@ -606,7 +606,6 @@
if (IsPreconnecting()) {
return ClientSocketPoolManager::PreconnectSocketsForHttpRequest(
origin_url_,
- request_info_.referrer,
request_info_.extra_headers,
request_info_.load_flags,
request_info_.priority,
@@ -621,7 +620,6 @@
} else {
return ClientSocketPoolManager::InitSocketHandleForHttpRequest(
origin_url_,
- request_info_.referrer,
request_info_.extra_headers,
request_info_.load_flags,
request_info_.priority,
diff --git a/net/http/http_vary_data.cc b/net/http/http_vary_data.cc
index f5c7514..09aab9d 100644
--- a/net/http/http_vary_data.cc
+++ b/net/http/http_vary_data.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -97,10 +97,6 @@
std::string HttpVaryData::GetRequestValue(
const HttpRequestInfo& request_info,
const std::string& request_header) {
- // Some special cases:
- if (!base::strcasecmp(request_header.c_str(), HttpRequestHeaders::kReferer))
- return request_info.referrer.spec();
-
// Unfortunately, we do not have access to all of the request headers at this
// point. Most notably, we do not have access to an Authorization header if
// one will be added to the request.