Отказался от применения стиля, потому что его тип 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
принадлежащий
HttpServletResponse
object для всех запросов в вашей конфигурации безопасности 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");
}
}
ВНИМАНИЕ: Вы знаете свой код лучше, чем кто-либо другой, поэтому просто знайте, что делаете.