springboot使用swagger2时,访问http://localhost:8080/swagger-ui.html页面404,无法访问

在SpringBoot项目中集成Swagger2时,遇到访问http://localhost:8080/swagger-ui.html显示404的错误。解决方法是引入springfox-boot-starter 3.0.0依赖,并在启动类添加API注解。访问地址已更改为http://localhost:8080/swagger-ui/index.html。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决springboot使用swagger2时,访问http://localhost:8080/swagger-ui.html页面404

在这里插入图片描述
其实还需导入一下依赖

 <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-boot-starter</artifactId>
      <version>3.0.0</version>
</dependency>

最后还需在启动类添加开启API注解
在这里插入图片描述
注意:访问地址发生了改变 http://localhost:8080/swagger-ui/index.html
在这里插入图片描述

<think>我们正在讨论Swagger接口被后端拦截的问题。根据引用内容,Swagger是一个用于生成API文档和测试接口的工具,但在某些情况下,由于安全框架(如Shiro或SpringSecurity)的配置,访问Swagger的请求可能会被拦截,导致无法直接访问。引用[1]提到,在Shiro中会拦截所有请求,因此需要添加默认访问路径(如`ip:port/context/swagger-ui.html#/`)并登录后才能访问。引用[3]则提供了一个具体的例子,在RuoYi-Vue框架中,通过SecurityConfig配置来允许匿名访问某些URL,其中就包括Swagger相关的路径。因此,Swagger接口被拦截的原因主要是安全框架的配置没有将Swagger的相关路径排除在认证之外。解决方案就是修改安全配置,将Swagger访问路径加入到允许匿名访问的列表中。具体步骤可能包括: 1.到安全配置文件(如SecurityConfig.java)。2.在配置中,添加Swagger相关的路径到permitAll()的列表中。根据引用[3]的示例,需要允许的路径包括:-`/swagger-ui.html`- `/swagger-resources/**`- `/webjars/**` -`/*/api-docs` -`/druid/**`(如果使用了Druid监控,也需要放行)另外,引用[1]还提到,如果项目有上下文路径(contextpath),则需要在访问路径中加上该上下文路径。 所以,总结解决方案:-修改安全配置,放行Swagger相关的URL。 -访问使用完整的路径(包括上下文路径)。 下面我将用中文给出一个结构清晰的回答,并生成相关问题。</think>### Swagger接口被后端拦截的原因及解决方案 #### 原因分析 1. **安全框架拦截机制** 主流安全框架(如Shiro、Spring Security)默认拦截所有请求,包括Swagger的API文档路径。例如: - Shiro会拦截`/swagger-ui.html`等路径[^1] - Spring Security需显式配置白名单[^3] 2. **上下文路径缺失** 项目部署若添加了上下文路径(如`/api`),但访问Swagger未包含该路径,会导致404或被拦截[^1]。 3. **认证要求未豁免** Swagger相关URL未被添加到安全配置的`permitAll()`列表中,需登录才能访问[^3]。 #### 解决方案 **1. 修改安全配置(以Spring Security为例)** 在安全配置类中添加Swagger路径白名单: ```java @Configuration public class SecurityConfig { protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() // 放行Swagger相关路径 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/v2/api-docs").permitAll() // 放行静态资源 .antMatchers(HttpMethod.GET, "/**/*.css", "/**/*.js").permitAll() .anyRequest().authenticated(); } } ``` > 关键配置项[^3]: > - `/swagger-ui.html`:主页面 > - `/swagger-resources/**`:资源文件 > - `/webjars/**`:前端依赖库 > - `/v2/api-docs`:API元数据 **2. 添加上下文路径** 访问需包含项目上下文路径: `http://ip:port/项目上下文/swagger-ui.html` > 例如部署路径为`/api`,完整URL应为: > `http://localhost:8080/api/swagger-ui.html`[^1] **3. 关闭生产环境Swagger(可选)** 通过Profile控制仅在开发环境启用: ```yaml # application.yml spring: profiles: active: dev # 生产环境改为prod swagger: enable: ${spring.profiles.active} != 'prod' ``` #### 验证步骤 1. 直接访问`{完整URL}/swagger-ui.html`应无需登录 2. 检查浏览器控制台无403/401错误 3. 确认`/v2/api-docs`接口返回JSON数据 > **技术原理**:Swagger本质是静态资源+API端点,需同放行HTML页面和后台数据接口[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值