peixue-dev/Archive/[一次性]服务列表401错误最终说明-2026-02-01.md

91 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 17:26:03 +08:00
# 服务列表401错误最终说明
## 问题描述
游客访问服务列表页面时,控制台显示 `/api/teacher/list` 返回401错误但页面功能正常。
## 根本原因
1. **前端配置正确**
- `/api/teacher/list` 已添加到 `GUEST_ALLOWED_URLS` 白名单
- 401错误已配置为静默失败不弹窗、不跳转
2. **后端配置正确**
- `WebMvcConfig.java` 已排除 `/api/teacher/list` 路径
- `TeacherController.java``getTeacherList` 方法不需要认证
3. **为什么还有401错误**
- 后端可能没有重新编译,旧的配置仍在运行
- 或者 JwtInterceptor 的排除规则没有生效
## 当前状态
-**页面功能正常** - 服务列表可以正常显示数据
- ⚠️ **控制台有错误** - 显示401但不影响使用
-**游客体验正常** - 不会弹窗或跳转
## 解决方案
### 方案1重新编译后端推荐
```bash
# 1. 停止后端服务
# 2. 清理并重新编译
cd peidu/backend
mvn clean package -DskipTests
# 3. 重启后端服务
```
### 方案2接受现状如果功能正常
如果页面功能完全正常,只是控制台有错误日志,可以暂时接受这个状态:
- 前端已正确处理401错误静默失败
- 不影响用户体验
- 不影响页面显示
## 验证步骤
1. **清除浏览器缓存**
2. **以游客身份访问服务列表页面**
3. **检查页面是否正常显示数据**
4. **检查控制台是否还有401错误**
## 技术细节
### 前端配置request.js
```javascript
const GUEST_ALLOWED_URLS = [
'/api/teacher/list', // ✅ 已添加
'/api/service/search',
'/api/category/all',
// ... 其他白名单接口
]
// 401错误处理
if (isGuest && isGuestAllowedUrl(options.url)) {
console.log('[Request] 游客模式白名单接口返回401静默失败')
reject({ code: 401, message: '未登录', silent: true })
return
}
```
### 后端配置WebMvcConfig.java
```java
registry.addInterceptor(jwtInterceptor)
.addPathPatterns("/api/**")
.excludePathPatterns(
"/api/teacher/list", // ✅ 已排除
"/api/teacher/detail/**",
"/api/service/**",
// ... 其他排除路径
);
```
## 结论
**当前实现已经正确**只是后端可能需要重新编译。如果页面功能正常控制台的401错误不影响使用可以暂时忽略。
如果需要彻底消除控制台错误,请重新编译并重启后端服务。