diff --git a/extensions/fetch/lib.rs b/extensions/fetch/lib.rs index 074e8827a6..ad599b87ca 100644 --- a/extensions/fetch/lib.rs +++ b/extensions/fetch/lib.rs @@ -37,6 +37,7 @@ use reqwest::redirect::Policy; use reqwest::Body; use reqwest::Client; use reqwest::Method; +use reqwest::RequestBuilder; use reqwest::Response; use serde::Deserialize; use serde::Serialize; @@ -60,7 +61,7 @@ pub fn init( user_agent: String, ca_data: Option>, proxy: Option, - frozen_headers: Option, + request_builder_hook: Option RequestBuilder>, ) -> Extension { Extension::builder() .js(include_js_files!( @@ -90,7 +91,7 @@ pub fn init( ca_data: ca_data.clone(), user_agent: user_agent.clone(), proxy: proxy.clone(), - frozen_headers: frozen_headers.clone(), + request_builder_hook, }); Ok(()) }) @@ -101,7 +102,7 @@ pub struct HttpClientDefaults { pub user_agent: String, pub ca_data: Option>, pub proxy: Option, - pub frozen_headers: Option, + pub request_builder_hook: Option RequestBuilder>, } pub trait FetchPermissions { @@ -217,13 +218,9 @@ where } } - // Set frozen_headers after the user provided headers, so the - // end user can't override them. let defaults = state.borrow::(); - if let Some(frozen_headers) = &defaults.frozen_headers { - for (key, value) in frozen_headers { - request = request.header(key, value) - } + if let Some(request_builder_hook) = defaults.request_builder_hook { + request = request_builder_hook(request); } let cancel_handle = CancelHandle::new_rc();