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

在golang HTTP FileServer的Content-Type标头上设置'charset'属性

堵鸿光
2023-03-14
问题内容

测试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声明的最佳方法是什么?


问题答案:

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

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

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

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



 类似资料:
  • 我正在使用ASP.NET WebApi创建一个RESTful API。我正在我的一个控制器中创建一个PUT方法,代码如下所示: 当我通过AJAX使用浏览器将其放到该位置时,它给出了以下例外情况: 标头名称使用不当。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMessage一起使用,内容标头与HttpContent对象一起使用。 但是不是一个完全有效的

  • 问题内容: 我正在尝试编写一个AngularJS资源模块,它将一些数据发布到服务器。默认的内容类型似乎是“ application /xml”。我试图将内容类型覆盖为“ application / x-www-form-urlencoded”。当执行普通的$http.post()时,我可以设置内容类型,当我检入Firebug时,可以看到设置正确。当我使用资源的POST方法时,无法获得要从默认值更改

  • 当内容类型不是text/html、text/plain或text/xml,而是application/x-www-form-urlencoded内容类型时,我很难理解如何设置字符集。 给出以下(简化的)javascript代码: 如果我没有显式设置编码, Firebug告诉我内容类型是"Application/x-www-form-urlencoded; charset=UTF-8"。 例如,如果

  • 我有两个Spring开机Rest服务。一个是json内容的生产者,另一个是消费者。 生产者关于控制器动作的相关代码如下: 在消费者Spring Boot服务代码中,我使用resTemplate调用这个endpoint并获得结果。如果您注意到上面的生产者代码,那么在RequestMapping属性中没有produces=“application/json”。但是,我在响应头中确实有Content-t

  • 问题内容: 我正在尝试实现简单的xhr抽象,并且在尝试设置POST标头时收到此警告。我认为这可能与在单独的js文件中设置标头有关,因为当我在.html文件的标记中设置标头时,效果很好。POST请求工作正常,但是我收到此警告,并且很好奇为什么。我同时针对标头和标头收到此警告,但仅在WebKit浏览器(Chrome 5 beta和Safari 4)中得到此警告。在Firefox中,我没有收到任何警告,