31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
|
|
# 头像修复完成 — 后端代理方案
|
|||
|
|
|
|||
|
|
## 一句话
|
|||
|
|
通过新建后端头像代理端点 `/api/avatar/proxy`,不修改 nginx 安全头,解决 COEP / Mixed Content / CSP 三层拦截导致的头像不显示问题。
|
|||
|
|
|
|||
|
|
## 验证结果
|
|||
|
|
- **API 代理**:✅ 正常返回 image/jpeg(42KB / 65KB 测试均通过)
|
|||
|
|
- **浏览器控制台**:✅ 零 COEP / Mixed Content / CSP 错误
|
|||
|
|
- **Network 请求**:✅ 3 个头像全部通过 `/api/avatar/proxy?url=...` 200 加载
|
|||
|
|
- **视觉验证**:✅ 坐席工作台头像正常显示(左侧会话列表 + 顶部导航栏)
|
|||
|
|
|
|||
|
|
## 修改文件
|
|||
|
|
| 文件 | 操作 |
|
|||
|
|
|-----|------|
|
|||
|
|
| `backend/app/services/avatar_service.py` | 修改(新增 `wrap_avatar_url` + HTTP→HTTPS 转换) |
|
|||
|
|
| `backend/app/services/session_service.py` | 修改(3 个头像返回路径统一包装) |
|
|||
|
|
| `backend/app/api/avatar.py` | 新建(代理端点 + SSRF 白名单) |
|
|||
|
|
| `backend/app/api/router.py` | 修改(注册路由) |
|
|||
|
|
|
|||
|
|
## 已部署
|
|||
|
|
- 4 个文件已上传 → 复制到 `/opt/wecom-it-desk/app/` → `docker compose restart backend`
|
|||
|
|
- Redis 头像缓存 `employee:avatar:*` 已清除(3 个 key)
|
|||
|
|
- 代理端点即时生效
|
|||
|
|
|
|||
|
|
## 关于"获取坐席列表失败"
|
|||
|
|
本次浏览器验证未复现该错误。如持续出现,需检查后端日志中 `/api/agents` 的具体报错。
|
|||
|
|
|
|||
|
|
## 交付物
|
|||
|
|
- `deliverables/software-bugfix-avatar-coep-delivery-2026-07-10.md` — 详细修复报告
|
|||
|
|
- 截图 `screenshot-1783683005062.png` — 验证截图
|