diff options
-rw-r--r-- | net/url_request/url_request_http_job.cc | 12 | ||||
-rw-r--r-- | net/url_request/url_request_redirect_job.h | 4 |
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; |