fix(web): serve SVG with image/svg+xml (#1410)

This commit is contained in:
XYSK-lilong007 2026-03-13 02:26:19 +08:00
parent 4a8a2e9c23
commit 2d8fd9c7ec
2 changed files with 19 additions and 0 deletions

View file

@ -4,6 +4,7 @@ import (
"embed" "embed"
"io/fs" "io/fs"
"log" "log"
"mime"
"net/http" "net/http"
"path" "path"
"strings" "strings"
@ -14,6 +15,10 @@ var frontendFS embed.FS
// registerEmbedRoutes sets up the HTTP handler to serve the embedded frontend files // registerEmbedRoutes sets up the HTTP handler to serve the embedded frontend files
func registerEmbedRoutes(mux *http.ServeMux) { 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 // Attempt to get the subdirectory 'dist' where Vite usually builds
subFS, err := fs.Sub(frontendFS, "dist") subFS, err := fs.Sub(frontendFS, "dist")
if err != nil { if err != nil {

View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"mime"
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"testing" "testing"
@ -31,3 +32,16 @@ func TestMissingAssetStays404(t *testing.T) {
t.Fatalf("status = %d, want %d", rr.Code, http.StatusNotFound) 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")
}
}