Golang文件服务器在linux和macos上设置不同的内容类型

zzoitvuj  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(118)

我在我的Web服务中使用http.FileServer,当我尝试从它提供一个javascript文件时,我在Linux(debian 11)上得到一个text/javascript; charset=utf-8的内容类型头,但在MacOS 13上得到application/javascript
Go语言的版本在linux上是1.19.1,在MacOS上是1.19.3,在两台机器上我都在运行web服务的环境中设置了LANG=en_GB.UTF-8
有趣的是,当服务于其他文本文件时,例如HTML文件,我将在MacOS和Linux上获得text/html; charset=utf-8
这是什么原因?它使我的单元测试在MacOS上失败,我更愿意测试完整的内容类型,包括字符集。

s5a0g9ez

s5a0g9ez1#

http.FileServer使用文件名的扩展名来确定Content-Type,如果它没有被设置的话。
mime.TypeByExtension()的文档中说,Map是由系统的MIME.info数据库增强的。
@AndreiVasilev指出,可以使用AddExtensionType()覆盖默认的mime类型。
或者,您可以更新相应的本地mime.types文件,使它们返回相同的类型。在我的MacOS 12.6.1上,我安装了apache,返回值为:

mime.TypeByExtension(".js")

/etc/apache2/mime.types开始。

相关问题