这是项目上出现的问题,出现的原因是我在后台加了一个解决跨域问题的类,该类继承了WebMvcConfigurationSupport ,导致swagger的映射失效。
解决办法:
1.关闭跨域类
2.在跨域的这个类中添加:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(
"classpath:/static/");
registry.addResourceHandler("swagger-ui.html").addResourceLocations(
"classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
总览:
@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {
/*
* 这里主要为了解决跨域问题,所以重写addCorsMappings方法
*/
@Override
protected void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.exposedHeaders("access-control-allow-headers",
"access-control-allow-methods",
"access-control-allow-origin",
"access-control-max-age",
"X-Frame-Options")
.allowCredentials(false).maxAge(3600);
super.addCorsMappings(registry);
}
//解决swagger映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(
"classpath:/static/");
registry.addResourceHandler("/swagger-ui.html").addResourceLocations(
"classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}
本文介绍了在Spring Boot项目中,由于添加解决跨域问题的类导致Swagger映射失效的状况。解决方案是关闭跨域类或者在跨域配置类中添加Swagger资源映射,确保Swagger的相关静态资源能够正确加载。通过覆盖`addResourceHandlers`方法,添加Swagger的静态资源路径,从而修复Swagger的映射问题。
1697

被折叠的 条评论
为什么被折叠?



