在 golang HTTP FileServer 的 Content-Type 标头上设置

我在测试 golang 网络应用程序时遇到了问题。在部署的版本中,nginx 位于应用程序的前端并显式设置,charset utf8;以便所有文本内容类型都附加一个字符集声明。

在测试中,我直接点击了 golang 应用程序,这里的内容类型没有字符集集。这在尝试为d3 之类的库提供服务时会导致问题,该库具有以下行:

var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;

因为 golang 没有指定字符集,所以这些在 chrome 中呈现为:

var Îµ = 1e-6, Îµ2 = Îµ * Îµ....

让 golang http 服务器在 HTTP 标头上输出 charset=utf8 声明的最佳方法是什么?


莫回无
浏览 157回答 1
1回答

子衿沉夜

FileServer 调用mime.TypeByExtension来获取内容类型。如果没有为扩展注册类型,则 FileServer 调用http.DetectContentType从文件的内容中猜测类型。如果文本/内容类型未指定字符集参数,则 mime 包会自动将 'charset=utf-8' 参数添加到内容类型。要调试此问题,请检查系统 mime.types 文件是否为文件扩展名指定了内容类型以及 charset 参数是否为“charset=utf-8”或未设置 charset 参数。如果系统 mime.types 条目丢失或不正确,则调用mime.AddExtensionType以覆盖系统设置。这可以在提供任何内容之前调用一次。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go