http.FileServer响应的MIME类型错误,显示了错误的"Content-Type"。

10
我正在使用http.FileServer来服务一系列mp3文件的目录,然后在JavaScript中用src将它们呈现。但是响应却使用Content-Type text/html,而不是audio/mpeg。我该如何设置FileServer响应的MIME类型?我看到了这个问题"在golang HTTP FileServer中设置Content-Type头中的charset属性",但我仍然不确定如何覆盖MIME类型。

我的代码如下:

```go //Go code here ```
fs := http.FileServer(http.Dir(dir))
http.Handle("/media", http.StripPrefix("/media", fs))
http.HandleFunc("/", p.playlistHandler)
http.ListenAndServe(":5177", nil)

我遇到的错误是:

HTTP "Content-Type" of "text/html" is not supported. Load of media resource http://localhost:5177/media/sample1.mp3 failed.
1个回答

7

这不是内容类型的问题。当您请求mp3文件时,您的 fs 处理程序未被调用。您需要在您的模式 /media 中添加/并剥离前缀,如下所示。

http.Handle("/media/", http.StripPrefix("/media/", fs))

原因在于net/http.ServeMux文档中的说明:

模式命名固定的、根路径,例如 "/favicon.ico",或者根子树,例如 "/images/"(注意末尾斜杠)。较长的模式优先于较短的模式,所以如果同时为 "/images/" 和 "/images/thumbnails/" 注册了处理程序,则后者将用于以 "/images/thumbnails/" 开头的路径,并且前者将接收任何在 "/images/" 子树中的其他路径的请求。

只使用 /media 时,您正在注册一个路径的处理程序,但是如果使用尾部斜杠,则它会被视为 根子树 并将为该子树下的请求提供服务。

你好,你能帮我解决这个问题吗?https://dev59.com/-HkPtIcB2Jgan1zngQwk - Nux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接