I added swagger-ui to my spring-boot service application and I've got some error like that when visiting the /swagger-ui/ link.
Error in browser console please see the image(click this link)
My reference in swagger is from here:
https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
here my sample coode of the configuration:
@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/");
    }
}
I tried excluding this part:
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
still no resolve. Hope someone might help. Thank you.
I'm using OpenApi 3 and I was facing with similar error:
Refused to apply style from 'http://localhost:8080/swagger-ui/swagger-ui.css' because its MIME type ('application/json') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Spring Security turned out to be a problem because it didn't allow to access swagger-ui.css due to no authorization. Following code solved my problem:
@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/**",
                "/swagger-ui.html");
    }
}
Probably you will have to correct above paths according to your swagger-ui URL config. In addition, I would suggest to use this solution only for local/dev profile in order to don't expose API documentation in production environment.
Let me know if it solved your issue. In case of futher problems I can provide full source. Cheers.
Besides @Lukasz's answer, sometimes, as part of the response headers, you might seem to be returning Content-Type as application/json of the HttpServletResponse object for all request in your spring security configuration.
You need to check in your code and find out where you are setting Content-Type in your spring security configuration.
For example, I was setting mine in an overridding method doFilterInternal of the class 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");
    }
}
CAUTION: You know your code better than anyone else so just know what you are doing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With