我在我的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上失败,我更愿意测试完整的内容类型,包括字符集。
1条答案
按热度按时间s5a0g9ez1#
http.FileServer
使用文件名的扩展名来确定Content-Type
,如果它没有被设置的话。mime.TypeByExtension()
的文档中说,Map是由系统的MIME.info数据库增强的。@AndreiVasilev指出,可以使用
AddExtensionType()
覆盖默认的mime类型。或者,您可以更新相应的本地
mime.types
文件,使它们返回相同的类型。在我的MacOS 12.6.1上,我安装了apache,返回值为:从
/etc/apache2/mime.types
开始。