diff --git a/web/backend/embed.go b/web/backend/embed.go index 556fb7384f..c5d8c3e986 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 c0365488e5..7f87519f29 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") + } +}