From 8801df6b5caaa217879d95ea9d8037b6b0193473 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Thu, 6 Nov 2025 08:51:18 -0300 Subject: [PATCH] only proxy when actually using dev server --- crates/tauri/src/manager/webview.rs | 14 +++++++++++--- crates/tauri/src/protocol/tauri.rs | 5 +++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/crates/tauri/src/manager/webview.rs b/crates/tauri/src/manager/webview.rs index 2c9334be3..6abf7cf2b 100644 --- a/crates/tauri/src/manager/webview.rs +++ b/crates/tauri/src/manager/webview.rs @@ -410,7 +410,11 @@ impl WebviewManager { let mut url = match &pending.webview_attributes.url { WebviewUrl::App(path) => { let app_url = app_manager.get_url(pending.webview_attributes.use_https_scheme); - let url = if PROXY_DEV_SERVER && is_local_network_url(&app_url) { + let url = if PROXY_DEV_SERVER + && is_local_network_url(&app_url) + // only proxy the dev server when we're not using embedded assets + && app_manager.assets.iter().next().is_none() + { Cow::Owned(Url::parse("tauri://localhost").unwrap()) } else { app_url @@ -430,7 +434,12 @@ impl WebviewManager { let config_url = app_manager.get_url(pending.webview_attributes.use_https_scheme); let is_app_url = config_url.make_relative(url).is_some(); let mut url = url.clone(); - if is_app_url && PROXY_DEV_SERVER && is_local_network_url(&url) { + if is_app_url + && PROXY_DEV_SERVER + && is_local_network_url(&url) + // only proxy the dev server when we're not using embedded assets + && app_manager.assets.iter().next().is_none() + { Url::parse("tauri://localhost").unwrap() } else { url @@ -440,7 +449,6 @@ impl WebviewManager { WebviewUrl::CustomProtocol(url) => url.clone(), _ => unimplemented!(), }; - #[cfg(not(feature = "webview-data-url"))] if url.scheme() == "data" { return Err(crate::Error::InvalidWebviewUrl( diff --git a/crates/tauri/src/protocol/tauri.rs b/crates/tauri/src/protocol/tauri.rs index 0e7a760fc..5d2ac46f3 100644 --- a/crates/tauri/src/protocol/tauri.rs +++ b/crates/tauri/src/protocol/tauri.rs @@ -72,8 +72,9 @@ fn get_response( web_resource_request_handler: Option<&WebResourceRequestHandler>, (url, response_cache): (&str, &Arc>>), ) -> Result>, Box> { + let proxy_dev_server = PROXY_DEV_SERVER && manager.assets.iter().next().is_none(); // use the entire URI as we are going to proxy the request - let path = if PROXY_DEV_SERVER { + let path = if proxy_dev_server { request.uri().to_string() } else { // ignore query string and fragment @@ -97,7 +98,7 @@ fn get_response( .add_configured_headers(manager.config.app.security.headers.as_ref()) .header("Access-Control-Allow-Origin", window_origin); - let mut response = if PROXY_DEV_SERVER && manager.assets.iter().count() == 0 { + let mut response = if proxy_dev_server { let decoded_path = percent_encoding::percent_decode(path.as_bytes()) .decode_utf8_lossy() .to_string();