使用 Spring MVC 的资源处理程序,很容易提供资源。
但是,某些文件,即 .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 类型呢?(对于雄猫和暗流)
CustomizableEmbeddedServletContainerFactory
有一个设置MIME类型的方法。您可以通过提供类型 EmbeddedServletContainerCustomizer
的 bean 来获取回调。