如何为 Spring Boot/MVC 资源设置可识别的内容/MIME 类型?
Posted
技术标签:
【中文标题】如何为 Spring Boot/MVC 资源设置可识别的内容/MIME 类型?【英文标题】:How to set recognized content/MIME types for Spring Boot/MVC resources? 【发布时间】: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)
【问题讨论】:
【参考方案1】:CustomizableEmbeddedServletContainerFactory
有一个method for setting mime types。您可以通过提供 EmbeddedServletContainerCustomizer
类型的 bean 来获得回调。
【讨论】:
但是,当应用程序在单独的 servlet 容器中部署为war
时,这不起作用。然后您应该配置容器,但我正在尝试提出一个不需要配置所有服务器实例的解决方案。关于如何在 Spring Boot 中处理这个问题的任何想法?
这可能是你可以在容器中配置的东西(例如,Tomcat 有一个为所有应用程序创建默认映射的 web.xml)。以上是关于如何为 Spring Boot/MVC 资源设置可识别的内容/MIME 类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 spring webflux 应用程序配置 oauth2 资源服务器?
使用 JSP 和 POM 中的自定义父集从 Spring Boot MVC 项目中创建一个可执行的 jar 服务内容