Spring Boot 1.5项目从Springfox迁移至Springdoc后Swagger UI无法访问
排查Spring Boot 1.5中Springdoc Swagger UI无法访问的问题
一、确认Springdoc版本适配
Spring Boot 1.5属于老版本,得用兼容的Springdoc版本,比如1.6.15(这是支持Spring Boot 1.x的最后几个稳定版本之一)。检查pom.xml或build.gradle里的依赖版本,别用只支持Spring Boot 2.x的新版本,不然会出现兼容性问题。
二、安全配置排查(核心排查点)
既然怀疑是安全拦截,直接看项目的Spring Security配置:
- 必须把Swagger UI相关URL加入白名单,允许匿名访问,需要放行的路径包括:
/swagger-ui/**/v3/api-docs/**- 旧路径
/swagger-ui.html也可以顺便加上,避免遗漏
- Java配置示例:在
configure(HttpSecurity http)方法里添加放行规则:http.authorizeRequests() .antMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-ui.html").permitAll() .anyRequest().authenticated(); - 如果项目启用了CSRF防护,要对Swagger相关路径关闭CSRF,否则会拦截请求:
http.csrf().ignoringAntMatchers("/swagger-ui/**", "/v3/api-docs/**");
三、过滤器链排查
项目里如果有自定义过滤器,逐个排查是否拦截了Swagger UI的请求:
- 可以临时注释掉自定义过滤器,测试能否访问Swagger UI,逐步定位是哪个过滤器导致的问题
- 检查过滤器的URL匹配规则,别把
/swagger-ui/**这类路径包含在拦截范围内;如果必须拦截,要确保过滤器不会阻断请求的正常返回流程
四、日志调试定位问题
开启DEBUG日志,直接看请求被拦截的具体环节:
- 在
application.yml里添加日志配置:logging: level: org.springframework.security: DEBUG org.springdoc: DEBUG - 启动项目后访问Swagger UI的URL,查看日志里的请求流转,比如是否出现403/401错误,或者Security过滤器的拦截记录,根据日志提示精准定位问题点
五、验证Swagger UI配置正确性
- 你配置了
springdoc.swagger-ui.path: /swagger-ui和use-root-path: true,实际访问路径应该是/swagger-ui/index.html,别混同Springfox的旧路径/swagger-ui.html - 可以先简化配置,去掉
use-root-path: true,用默认路径/swagger-ui/index.html测试,排除配置冲突的可能
六、静态资源访问检查
Spring Boot 1.5的静态资源处理逻辑和2.x不同,要确保Swagger UI的静态资源(JS、CSS、HTML等)能被正确加载:
- 如果项目自定义了静态资源路径配置,必须把Springdoc的静态资源目录
META-INF/resources/webjars/加入静态资源扫描路径
内容的提问来源于stack exchange,提问作者Bharata
相关产品推荐
相关产品推荐

