Отказался от применения стиля, потому что его тип MIME ('application/json') не является поддерживаемым типом MIME таблицы стилей, и включена строгая проверка MIME

Я добавил swagger ui в свое приложение службы весенней загрузки, и у меня возникла такая ошибка при посещении ссылки "/ swagger-ui /".

Ошибка в консоли браузера, пожалуйста, посмотрите изображение (нажмите на эту ссылку)

Моя ссылка на чванство отсюда: https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

вот мой образец конфигурации:

      @Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggerInterceptor());
    }

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

Я пробовал исключить эту часть

      
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

все еще нет решения. Надеюсь, кто-то может помочь. Спасибо.

2 ответа

Я использую OpenApi 3, и я столкнулся с аналогичной ошибкой:

Отказался от применения стиля из «http: // localhost:8080 / swagger-ui / swagger-ui.css», поскольку его тип MIME («application / json») не является поддерживаемым типом MIME таблицы стилей и включена строгая проверка MIME.

Spring Security оказался проблемой, потому что он не позволял получить доступ к swagger-ui.css из-за отсутствия авторизации. Следующий код решил мою проблему:

      @Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

// ... ommited security config

    @Override
    public void configure(final WebSecurity webSecurity) {
        webSecurity.ignoring().antMatchers(
                "/v3/api-docs/**",
                "/swagger-ui/**");
    }
}

Вероятно, вам придется исправить указанные выше пути в соответствии с конфигурацией URL-адреса swagger-ui. Кроме того, я бы предложил использовать это решение только для локального профиля / dev, чтобы не предоставлять документацию по API в производственной среде. Сообщите мне, если это решит вашу проблему. В случае возникновения дополнительных проблем я могу предоставить полный исходный код. Ваше здоровье.

Помимо ответа @Lukasz, иногда, как часть заголовков ответа, может показаться, что вы возвращаете Content-Typeв качестве application/jsonпринадлежащий HttpServletResponseobject для всех запросов в вашей конфигурации безопасности spring.

Вам нужно проверить свой код и выяснить, где вы устанавливаете Content-Type в конфигурации безопасности Spring.

Например, я устанавливал свой метод переопределения doFilterInternalкласса OncePerRequestFilter.

      public class JwtAuthenticationFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
        res.setStatus(HttpStatus.OK.value());
        //The below commented line seem to apply for all URIs.        
        //res.setContentType("application/json");
    }
}

ВНИМАНИЕ: Вы знаете свой код лучше, чем кто-либо другой, поэтому просто знайте, что делаете.

Другие вопросы по тегам