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

91 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 服务列表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错误不影响使用可以暂时忽略。
如果需要彻底消除控制台错误,请重新编译并重启后端服务。