Spring MVC (Boot) не отправляет тип MIME для определенных файлов (WOFF и т. д.)

Я пишу приложение на основе весенней загрузки и заметил несколько предупреждений в хроме. Он жалуется, что, например, веб-шрифты (расширение woff) отправляются как обычный/текст вместо их правильного типа MIME.

Я использую обычный механизм для статических файлов без специальной настройки. Исходный код, который я нашел, выглядит так, будто невозможно добавить больше MIME-типов для «стандартного» ResourceHandler. Resourcehandler отправляет распознавание типа mime в контейнер сервлетов, который является tomcat по умолчанию для spring-boot 1.2.

Я что-то упускаю? Кто-нибудь знает простой способ улучшить сопоставление ресурсов, чтобы обслуживать больше типов файлов с правильным типом mime?

Прямо сейчас я думаю написать фильтр, который срабатывает для статического контента и исправляет отсутствующие MIME-типы постфактум. Может быть, мне следует создать запрос функции в springsource... ;-)


person Patrick Cornelissen    schedule 23.12.2014    source источник


Ответы (1)


Хорошо, сам нашел :-)

В Spring boot вы можете настроить контейнер сервлета с помощью этого настройщика и добавить туда новые MIME-типы.

(ОБНОВЛЕНИЕ)

Весенняя загрузка 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);
    }
}
person Patrick Cornelissen    schedule 23.12.2014
comment
Я сделал то же самое со своим приложением, установив типы js и css, но по какой-то причине все еще получаю неправильные типы mime. Любые предложения о том, как обеспечить его работу? - person David Findlay; 17.07.2016
comment
js и css должны работать из коробки! Вы уверены, что не неправильно настроили Spring MVC? - person Patrick Cornelissen; 18.07.2016
comment
Ты прав. У меня плохо настроено. На самом деле он получает страницу входа, а не файлы JS и CSS, отсюда и ошибка типа mime. - person David Findlay; 18.07.2016
comment
Спасибо Антону за дополнение по поводу woff2 - person Patrick Cornelissen; 06.08.2016
comment
Обратите внимание, что это работает только с контейнером сервлетов Embedded (runnable jar). - person evandongen; 08.05.2017
comment
Тег embedded-tomcat8 присутствует. (И большинство приложений с весенней загрузкой используют встроенный контейнер) - person Patrick Cornelissen; 09.05.2017
comment
@ Патрик Корнелиссен, есть идеи, как это сделать для внешнего кота? - person Mahmoud Saleh; 10.02.2018
comment
Когда вы используете обычный кот, вы сможете поместить его в файл web.xml. - person Patrick Cornelissen; 14.02.2018