当前位置: 首页 > 面试题库 >

错误的MIME“ Content-Type”的http.FileServer响应

许招
2023-03-14
问题内容

我正在使用http.FileServer来提供mp3文件的目录,该模板随后srcjavascript中。但是,该响应使用Content-Type
text/html代替audio/mpeg。我如何设置FileServer响应的mime类型,我看到了这个问题在golang HTTPFileServer的Content-Type标头上设置了’charset’属性,但是我仍然不确定如何覆盖mime类型。

我的代码如下所示:

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.

问题答案:

这不是内容类型的问题。fs请求mp3时不会调用您的处理程序。您需要像这样/在图案/media和带状前缀中添加一个

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

原因是在net /
http.ServeMux
的文档中

模式命名固定的,有根的路径(例如“ /favicon.ico”)或有根的子树(例如“ / images
/”)(请注意结尾的斜杠)。较长的模式优先于较短的模式,因此,如果同时为“ / images /”和“ / images / thumbnails
/”注册了处理程序,则将为以“ / images / thumbnails /”开头的路径调用后一个处理程序将在“ / images
/”子树中接收对任何其他路径的请求。

只需/media为路径注册处理程序,但在其后加上斜杠,它将视为a rooted subtree,并将在该树下处理请求。



 类似资料:
  • 问题内容: 有没有一种方法可以找出Linux bash脚本中文件的MIME类型(或者称为“ Content-Type”?)? 我需要它的原因是因为ImageShack似乎需要它来上载文件,因为某种原因它将.png文件检测为文件。 我检查了文件,它实际上是一个PNG图片: 这给了我错误: 这可行,但是我需要指定一个MIME-TYPE。 问题答案: 使用。例子:

  • 以下是我的服务代码: 和我的客户代码: 如何在FaignClient中设置?

  • Content-Type实体头用于指示所述媒体类型的资源的。 作为响应,Content-Type标题告诉客户实际返回的内容的内容类型。浏览器在某些情况下会执行 MIME 嗅探,并不一定会遵循此标头的值; 为了防止这种行为,X-Content-Type-Options可以将标题设置为nosniff。 在请求(例如POST或PUT)中,客户端通知服务器实际发送了什么类型的数据。 Header type

  • 我试图通过axios post请求向后端发送一个文件。 这是我当前遇到的错误: cherrypy._cperror.httperror:(415,“预期为内容类型application/json,text/javascript的实体”) 我不知道从这里到哪里去。任何帮助都将不胜感激。

  • Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。 HTTP content-type 对照表 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Typ

  • 的X-Content-Type-Options响应的 HTTP 标头是由服务器使用以指示在通告的 MIME 类型的标记Content-Type标头不应该被改变,并且被遵循。这允许选择不使用 MIME 类型的嗅探,换句话说,它可以说网站管理员知道他们在做什么。 微软在 IE 8 中引入了这个头文件,作为网站管理员阻止正在发生的内容嗅探的一种方式,并且可以将不可执行的 MIME 类型转换为可执行的 M