summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/url_request/url_request_http_job.cc12
-rw-r--r--net/url_request/url_request_redirect_job.h4
2 files changed, 10 insertions, 6 deletions
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index d432f54..bd33720 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -28,6 +28,7 @@
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_error_job.h"
+#include "net/url_request/url_request_redirect_job.h"
// static
std::set<int> URLRequestHttpJob::explicitly_allowed_ports_;
@@ -56,8 +57,15 @@ URLRequestJob* URLRequestHttpJob::Factory(URLRequest* request,
if (kForceHTTPS && scheme == "http" &&
request->context()->force_tls_state() &&
request->context()->force_tls_state()->IsEnabledForHost(
- request->url().host()))
- return new URLRequestErrorJob(request, net::ERR_DISALLOWED_URL_SCHEME);
+ request->url().host())) {
+ DCHECK_EQ(request->url().scheme(), "http");
+ url_canon::Replacements<char> replacements;
+ static const char kNewScheme[] = "https";
+ replacements.SetScheme(kNewScheme,
+ url_parse::Component(0, strlen(kNewScheme)));
+ GURL new_location = request->url().ReplaceComponents(replacements);
+ return new URLRequestRedirectJob(request, new_location);
+ }
return new URLRequestHttpJob(request);
}
diff --git a/net/url_request/url_request_redirect_job.h b/net/url_request/url_request_redirect_job.h
index df35f8d..d7395a7 100644
--- a/net/url_request/url_request_redirect_job.h
+++ b/net/url_request/url_request_redirect_job.h
@@ -5,11 +5,7 @@
#ifndef NET_URL_REQUEST_URL_REQUEST_REDIRECT_JOB_H_
#define NET_URL_REQUEST_URL_REQUEST_REDIRECT_JOB_H_
-#include <string>
-
-#include "net/url_request/url_request.h"
#include "net/url_request/url_request_job.h"
-#include "googleurl/src/gurl.h"
class GURL;