From 2d8fd9c7ec9235a06d34a5dbae106356e6af29f8 Mon Sep 17 00:00:00 2001 From: XYSK-lilong007 <267018309+XYSK-lilong007@users.noreply.github.com> Date: Fri, 13 Mar 2026 02:26:19 +0800 Subject: [PATCH] fix(web): serve SVG with image/svg+xml (#1410) --- web/backend/embed.go | 5 +++++ web/backend/embed_test.go | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/web/backend/embed.go b/web/backend/embed.go index 556fb7384..c5d8c3e98 100644 --- a/web/backend/embed.go +++ b/web/backend/embed.go @@ -4,6 +4,7 @@ import ( "embed" "io/fs" "log" + "mime" "net/http" "path" "strings" @@ -14,6 +15,10 @@ var frontendFS embed.FS // registerEmbedRoutes sets up the HTTP handler to serve the embedded frontend files func registerEmbedRoutes(mux *http.ServeMux) { + if err := mime.AddExtensionType(".svg", "image/svg+xml"); err != nil { + log.Printf("Warning: failed to register SVG MIME type: %v", err) + } + // Attempt to get the subdirectory 'dist' where Vite usually builds subFS, err := fs.Sub(frontendFS, "dist") if err != nil { diff --git a/web/backend/embed_test.go b/web/backend/embed_test.go index c0365488e..7f87519f2 100644 --- a/web/backend/embed_test.go +++ b/web/backend/embed_test.go @@ -1,6 +1,7 @@ package main import ( + "mime" "net/http" "net/http/httptest" "testing" @@ -31,3 +32,16 @@ func TestMissingAssetStays404(t *testing.T) { t.Fatalf("status = %d, want %d", rr.Code, http.StatusNotFound) } } + +func TestRegisterEmbedRoutesRegistersSVGContentType(t *testing.T) { + if err := mime.AddExtensionType(".svg", "image/svg"); err != nil { + t.Fatalf("AddExtensionType() seed error: %v", err) + } + + mux := http.NewServeMux() + registerEmbedRoutes(mux) + + if got := mime.TypeByExtension(".svg"); got != "image/svg+xml" { + t.Fatalf("TypeByExtension(.svg) = %q, want %q", got, "image/svg+xml") + } +}