springdoc swagger-ui重定向未包含协议、主机名及端口问题排查
问题原因
这是springdoc-openapi-ui 1.5.9版本的已知缺陷:当server.servlet.context-path配置为根路径/时,内置的重定向逻辑会错误生成相对路径的跳转地址,缺少协议、主机和端口前缀;当context-path为非空值时,路径拼接逻辑正常,因此不会触发该问题。
可行解决方案
- 方案1:升级springdoc-openapi-ui版本
升级到1.6.0及以上版本即可,该版本已经修复了根路径下的重定向路径拼接问题,与你当前使用的Spring Boot 2.3.5.RELEASE版本完全兼容。修改依赖版本即可:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.15</version> </dependency> - 方案2:添加显式重定向配置(无需修改依赖版本)
新增自定义Web配置类,手动添加/swagger-ui路径的重定向规则,强制返回规范的跳转地址:import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class SwaggerConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/swagger-ui", "/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config"); } } - 方案3:直接访问完整入口地址
无需修改任何配置,直接访问完整的swagger-ui入口地址http://<host>:<port>/swagger-ui/index.html即可跳过有缺陷的重定向步骤,正常加载接口文档。
内容的提问来源于stack exchange,提问作者ebersoless
相关产品推荐
相关产品推荐

