From 079b1cc06e1e5437686bac9049d5ac569c3f42df Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Tue, 21 Jun 2022 05:29:03 -0700 Subject: [PATCH] fix(core): properly get external URL origin, closes #4414 (#4417) --- .changes/fix-dev-path-origin.md | 5 +++++ core/tauri/src/hooks.rs | 2 +- core/tauri/src/manager.rs | 16 +++++----------- 3 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 .changes/fix-dev-path-origin.md diff --git a/.changes/fix-dev-path-origin.md b/.changes/fix-dev-path-origin.md new file mode 100644 index 000000000..50fbea873 --- /dev/null +++ b/.changes/fix-dev-path-origin.md @@ -0,0 +1,5 @@ +--- +"tauri": patch +--- + +Initialize Tauri script when `devPath` is an external URL with path. diff --git a/core/tauri/src/hooks.rs b/core/tauri/src/hooks.rs index 309d9b39b..e8bed6f56 100644 --- a/core/tauri/src/hooks.rs +++ b/core/tauri/src/hooks.rs @@ -39,7 +39,7 @@ pub(crate) struct IpcJavascript<'a> { #[derive(Template)] #[default_template("../scripts/isolation.js")] pub(crate) struct IsolationJavascript<'a> { - pub(crate) origin: &'a str, + pub(crate) origin: String, pub(crate) isolation_src: &'a str, pub(crate) style: &'a str, } diff --git a/core/tauri/src/manager.rs b/core/tauri/src/manager.rs index 1385b4b7c..c2ff05bb4 100644 --- a/core/tauri/src/manager.rs +++ b/core/tauri/src/manager.rs @@ -362,16 +362,10 @@ impl WindowManager { } /// Get the origin as it will be seen in the webview. - fn get_browser_origin(&self) -> Cow<'_, str> { + fn get_browser_origin(&self) -> String { match self.base_path() { - AppUrl::Url(WindowUrl::External(url)) => { - let mut url = url.to_string(); - if url.ends_with('/') { - url.pop(); - } - Cow::Owned(url) - } - _ => Cow::Owned(format_real_schema("tauri")), + AppUrl::Url(WindowUrl::External(url)) => url.origin().ascii_serialization(), + _ => format_real_schema("tauri"), } } @@ -450,7 +444,7 @@ impl WindowManager { if let Pattern::Isolation { schema, .. } = self.pattern() { webview_attributes = webview_attributes.initialization_script( &IsolationJavascript { - origin: &self.get_browser_origin(), + origin: self.get_browser_origin(), isolation_src: &crate::pattern::format_real_schema(schema), style: tauri_utils::pattern::isolation::IFRAME_STYLE, } @@ -883,7 +877,7 @@ impl WindowManager { #[derive(Template)] #[default_template("../scripts/init.js")] struct InitJavascript<'a> { - origin: Cow<'a, str>, + origin: String, #[raw] pattern_script: &'a str, #[raw]