diff --git a/src-tauri/src/core/clash.rs b/src-tauri/src/core/clash.rs
index 0091c857ddc1720d2d03561a1fc7e06fafbb7bbb..4eae910f21609e6a1656b79968e27997d4681115 100644
--- a/src-tauri/src/core/clash.rs
+++ b/src-tauri/src/core/clash.rs
@@ -95,7 +95,18 @@ impl Clash {
 
     let server = match clash_config.get(&key_server) {
       Some(value) => match value {
-        Value::String(val_str) => Some(val_str.clone()),
+        Value::String(val_str) => {
+          // `external-controller` could be
+          // "127.0.0.1:9090" or ":9090"
+          // Todo: maybe it could support single port
+          let server = val_str.clone();
+          let server = match server.starts_with(":") {
+            true => format!("127.0.0.1{server}"),
+            false => server,
+          };
+
+          Some(server)
+        }
         _ => None,
       },
       _ => None,
@@ -258,14 +269,8 @@ impl Clash {
     config::save_yaml(temp_path.clone(), &config, Some("# Clash Verge Temp File"))?;
 
     tauri::async_runtime::spawn(async move {
-      // `external-controller` could be
-      // "127.0.0.1:9090" or ":9090"
-      // Todo: maybe it could support single port
       let server = info.server.unwrap();
-      let server = match server.starts_with(":") {
-        true => format!("http://127.0.0.1{server}/configs"),
-        false => format!("http://{server}/configs"),
-      };
+      let server = format!("http://{server}/configs");
 
       let mut headers = HeaderMap::new();
       headers.insert("Content-Type", "application/json".parse().unwrap());