diff options
-rw-r--r-- | components/net/http_loader.rs | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index f2158bb4aee..a451fde1fbc 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -39,7 +39,7 @@ use msg::constellation_msg::{HistoryStateId, PipelineId}; use net_traits::quality::{quality_to_value, Quality, QualityItem}; use net_traits::request::Origin::Origin as SpecificOrigin; use net_traits::request::{CacheMode, CredentialsMode, Destination, Origin}; -use net_traits::request::{RedirectMode, Referrer, Request, RequestMode}; +use net_traits::request::{RedirectMode, Referrer, Request, RequestBuilder, RequestMode}; use net_traits::request::{ResponseTainting, ServiceWorkersMode}; use net_traits::response::{HttpsState, Response, ResponseBody, ResponseType}; use net_traits::{CookieSource, FetchMetadata, NetworkError, ReferrerPolicy}; @@ -1606,17 +1606,20 @@ fn cors_preflight_fetch( context: &FetchContext, ) -> Response { // Step 1 - let mut preflight = Request::new( - request.current_url(), - Some(request.origin.clone()), - request.pipeline_id, - ); - preflight.method = Method::OPTIONS; - preflight.initiator = request.initiator.clone(); - preflight.destination = request.destination.clone(); - preflight.origin = request.origin.clone(); - preflight.referrer = request.referrer.clone(); - preflight.referrer_policy = request.referrer_policy; + let mut preflight = RequestBuilder::new(request.current_url()) + .method(Method::OPTIONS) + .origin(match &request.origin { + Origin::Client => { + unreachable!("We shouldn't get Client origin in cors_preflight_fetch.") + }, + Origin::Origin(origin) => origin.clone(), + }) + .pipeline_id(request.pipeline_id) + .initiator(request.initiator.clone()) + .destination(request.destination.clone()) + .referrer(Some(request.referrer.clone())) + .referrer_policy(request.referrer_policy) + .build(); // Step 2 preflight |