11

我正在编写一个基于 Spring Boot 的应用程序,并注意到 chrome 中有一些警告。它抱怨例如网络字体(扩展名 woff)作为纯文本而不是正确的 mime 类型发送。

我在没有特殊配置的情况下对静态文件使用常规机制。我发现的源代码看起来不可能为“stock”ResourceHandler 添加更多的 mimetypes。Resourcehandler 将 mime 类型识别分派到 servlet 容器,这是 spring-boot 1.2 的默认 tomcat。

我错过了什么吗?有人知道一种简单的方法来增强资源映射以提供更多具有正确 mime 类型的文件类型吗?

现在,我正在考虑编写一个过滤器,该过滤器会针对静态内容触发并在事后修补缺少的 mimetypes。也许我应该在 springsource 创建一个功能请求...... ;-)

4

1 回答 1

30

好的,我自己找到了:-)

在 Spring boot 中,您可以使用此自定义程序自定义 servlet 容器并在其中添加新的 mimetype。

更新

春季启动 2.x:

@Component
public class ServletCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);
        mappings.add("woff", "application/x-font-woff");
        factory.setMimeMappings(mappings);
    }
}

春季启动 1.x:

@Component
public class ServletCustomizer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);
        mappings.add("woff","application/font-woff");
        mappings.add("woff2","application/font-woff2");
        container.setMimeMappings(mappings);
    }
}
于 2014-12-23T12:58:33.743 回答