Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5233)

Unified Diff: net/url_request/url_request_http_job.cc

Issue 2079783002: Move HSTS redirection from URLRequest to URLRequestHTTPJob. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/url_request/url_request_http_job.cc
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 3fc81f77d9d4a3f93c41f53fd08bfba0d9605785..73fe8fa0d6ae110f6e8884f19642dd173f75101f 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -158,6 +158,27 @@ void LogChannelIDAndCookieStores(const GURL& url,
EPHEMERALITY_MAX);
}
+net::URLRequestRedirectJob* MaybeInternallyRedirect(
+ net::URLRequest* request,
+ net::NetworkDelegate* network_delegate) {
+ const GURL& url = request->url();
+ if (url.SchemeIsCryptographic())
+ return nullptr;
+
+ net::TransportSecurityState* hsts =
+ request->context()->transport_security_state();
+ if (!hsts || !hsts->ShouldUpgradeToSSL(url.host()))
+ return nullptr;
+
+ GURL::Replacements replacements;
+ replacements.SetSchemeStr(url.SchemeIs(url::kHttpScheme) ? url::kHttpsScheme
+ : url::kWssScheme);
+ return new net::URLRequestRedirectJob(
+ request, network_delegate, url.ReplaceComponents(replacements),
+ // Use status code 307 to preserve the method, so POST requests work.
+ net::URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "HSTS");
+}
+
} // namespace
namespace net {
@@ -258,13 +279,11 @@ URLRequestJob* URLRequestHttpJob::Factory(URLRequest* request,
request, network_delegate, ERR_INVALID_ARGUMENT);
}
- GURL redirect_url;
- if (request->GetHSTSRedirect(&redirect_url)) {
- return new URLRequestRedirectJob(
- request, network_delegate, redirect_url,
- // Use status code 307 to preserve the method, so POST requests work.
- URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "HSTS");
- }
+ URLRequestRedirectJob* redirect =
+ MaybeInternallyRedirect(request, network_delegate);
+ if (redirect)
+ return redirect;
+
return new URLRequestHttpJob(request,
network_delegate,
request->context()->http_user_agent_settings());

Powered by Google App Engine
This is Rietveld 408576698