package spa import "mime" // Go's built-in MIME table — and a container image without /etc/mime.types — has no // entry for these extensions, so http.FileServer falls back to content sniffing and // mislabels them. The one that matters for a PWA server is the web app manifest, // sniffed as text/plain instead of application/manifest+json. Registering the types // once at package load makes mime.TypeByExtension authoritative, so the correct // Content-Type is sent and no sniffing fallback runs. // // This is a correctness nit, not a fix for a live break: the manifest spec parses by // content (valid JSON) rather than declared type, so browsers accept it either way. // A PWA-focused server should still label it correctly. .webp/.avif get the same // treatment for the same reason. func init() { for ext, typ := range map[string]string{ ".webmanifest": "application/manifest+json", ".webp": "image/webp", ".avif": "image/avif", } { _ = mime.AddExtensionType(ext, typ) } }