【问题标题】:How to set recognized content/MIME types for Spring Boot/MVC resources?如何为 Spring Boot/MVC 资源设置可识别的内容/MIME 类型?
【发布时间】:2015-02-24 09:03:01
【问题描述】:

使用Spring MVC's ResourceHandler 很容易提供资源。

但是,某些文件,即 .ico 文件无法正确识别,它们没有得到正确的 Content-Type 标头。看来这是由ResourceHttpRequestHandler 处理的:

protected MediaType getMediaType(Resource resource) {
    MediaType mediaType = null;
    String mimeType = getServletContext().getMimeType(resource.getFilename());
    if (StringUtils.hasText(mimeType)) {
        mediaType = MediaType.parseMediaType(mimeType);
    }
    if (jafPresent && (mediaType == null || MediaType.APPLICATION_OCTET_STREAM.equals(mediaType))) {
        MediaType jafMediaType = ActivationMediaTypeFactory.getMediaType(resource.getFilename());
        if (jafMediaType != null && !MediaType.APPLICATION_OCTET_STREAM.equals(jafMediaType)) {
            mediaType = jafMediaType;
        }
    }
    return mediaType;
}

那么如何在 Spring Boot 1.2 中配置可识别的文件扩展名/MIME 类型? (对于 Tomcat 和 Undertow)

【问题讨论】:

    标签: spring spring-mvc tomcat spring-boot undertow


    【解决方案1】:

    CustomizableEmbeddedServletContainerFactory 有一个method for setting mime types。您可以通过提供 EmbeddedServletContainerCustomizer 类型的 bean 来获得回调。

    【讨论】:

    • 但是,当应用程序在单独的 servlet 容器中部署为 war 时,这不起作用。然后您应该配置容器,但我正在尝试提出一个不需要配置所有服务器实例的解决方案。关于如何在 Spring Boot 中处理这个问题的任何想法?
    • 这可能是你可以在容器中配置的东西(例如,Tomcat 有一个为所有应用程序创建默认映射的 web.xml)。
    猜你喜欢
    • 2018-04-23
    • 2017-03-13
    • 2018-11-11
    • 2013-04-22
    • 2014-10-21
    • 2012-12-23
    • 2017-05-06
    • 2020-12-10
    • 2015-12-18
    相关资源
    最近更新 更多