为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
莫回无 2021-11-01 17:08:52
我在测试 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 声明的最佳方法是什么?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

FileServer 调用mime.TypeByExtension来获取内容类型。如果没有为扩展注册类型,则 FileServer 调用http.DetectContentType从文件的内容中猜测类型。

如果文本/内容类型未指定字符集参数,则 mime 包会自动将 'charset=utf-8' 参数添加到内容类型。

要调试此问题,请检查系统 mime.types 文件是否为文件扩展名指定了内容类型以及 charset 参数是否为“charset=utf-8”或未设置 charset 参数。

如果系统 mime.types 条目丢失或不正确,则调用mime.AddExtensionType以覆盖系统设置。这可以在提供任何内容之前调用一次。


查看完整回答
反对 回复 2021-11-01
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信