diff --git a/server/dashboard_api.go b/server/dashboard_api.go
index 27944b9a..95d4505b 100644
--- a/server/dashboard_api.go
+++ b/server/dashboard_api.go
@@ -17,6 +17,7 @@ package server
 import (
 	"encoding/json"
 	"net/http"
+	"net/url"
 
 	"github.com/gorilla/mux"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -282,7 +283,7 @@ func (svr *Service) apiProxyByTypeAndName(w http.ResponseWriter, r *http.Request
 	res := GeneralResponse{Code: 200}
 	params := mux.Vars(r)
 	proxyType := params["type"]
-	name := params["name"]
+	name, _ := url.QueryUnescape(params["name"])
 
 	defer func() {
 		log.Info("Http response [%s]: code [%d]", r.URL.Path, res.Code)
@@ -350,7 +351,7 @@ type GetProxyTrafficResp struct {
 func (svr *Service) apiProxyTraffic(w http.ResponseWriter, r *http.Request) {
 	res := GeneralResponse{Code: 200}
 	params := mux.Vars(r)
-	name := params["name"]
+	name, _ := url.QueryUnescape(params["name"])
 
 	defer func() {
 		log.Info("Http response [%s]: code [%d]", r.URL.Path, res.Code)
diff --git a/web/frps/src/components/Traffic.vue b/web/frps/src/components/Traffic.vue
index ba07d4b9..46ae02cf 100644
--- a/web/frps/src/components/Traffic.vue
+++ b/web/frps/src/components/Traffic.vue
@@ -11,7 +11,7 @@ const props = defineProps<{
 }>()
 
 const fetchData = () => {
-  let url = '../api/traffic/' + props.proxyName
+  let url = '../api/traffic/' + encodeURIComponent(props.proxyName)
   fetch(url, { credentials: 'include' })
     .then((res) => {
       return res.json()