Use RequestBuilder for CORS preflight fetch

This commit is contained in:
CYBAI 2019-07-26 15:16:32 +09:00
parent 9c3e4a74db
commit f771e5f371

View file

@ -39,7 +39,7 @@ use msg::constellation_msg::{HistoryStateId, PipelineId};
use net_traits::quality::{quality_to_value, Quality, QualityItem}; use net_traits::quality::{quality_to_value, Quality, QualityItem};
use net_traits::request::Origin::Origin as SpecificOrigin; use net_traits::request::Origin::Origin as SpecificOrigin;
use net_traits::request::{CacheMode, CredentialsMode, Destination, Origin}; 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::request::{ResponseTainting, ServiceWorkersMode};
use net_traits::response::{HttpsState, Response, ResponseBody, ResponseType}; use net_traits::response::{HttpsState, Response, ResponseBody, ResponseType};
use net_traits::{CookieSource, FetchMetadata, NetworkError, ReferrerPolicy}; use net_traits::{CookieSource, FetchMetadata, NetworkError, ReferrerPolicy};
@ -1606,17 +1606,20 @@ fn cors_preflight_fetch(
context: &FetchContext, context: &FetchContext,
) -> Response { ) -> Response {
// Step 1 // Step 1
let mut preflight = Request::new( let mut preflight = RequestBuilder::new(request.current_url())
request.current_url(), .method(Method::OPTIONS)
Some(request.origin.clone()), .origin(match &request.origin {
request.pipeline_id, Origin::Client => {
); unreachable!("We shouldn't get Client origin in cors_preflight_fetch.")
preflight.method = Method::OPTIONS; },
preflight.initiator = request.initiator.clone(); Origin::Origin(origin) => origin.clone(),
preflight.destination = request.destination.clone(); })
preflight.origin = request.origin.clone(); .pipeline_id(request.pipeline_id)
preflight.referrer = request.referrer.clone(); .initiator(request.initiator.clone())
preflight.referrer_policy = request.referrer_policy; .destination(request.destination.clone())
.referrer(Some(request.referrer.clone()))
.referrer_policy(request.referrer_policy)
.build();
// Step 2 // Step 2
preflight preflight