Files
shz-backend/docs/test-reports/job-fair/2026-07-25/bugs/BUG-006-enterprise-outdoor-image-mixed-content.md

62 lines
3.4 KiB
Markdown
Raw Normal View History

# BUG-006企业端户外招聘会列表返回本机 HTTP 图片地址并触发混合内容失败
- 严重级别P2线上页面资源不可用且存在安全配置问题
- 状态:代码已修复;历史图片数据待数据管理员确认/清理
- 环境test
- 角色PC 企业端(已登录测试企业角色)
- 入口:`/shihezi/jobfair/jobfair/outdoorfair`
- 招聘会:`id=14`,标题“测试”
- 发现时间2026-07-25
## 复现步骤
1. 使用测试企业角色进入企业管理端。
2. 打开“招聘会管理 → 户外招聘会”。
3. 在列表中找到标题为“测试”的招聘会记录。
4. 观察“招聘会照片”列,并查看 Chrome DevTools Console/Network。
## 预期结果
招聘会照片应使用测试环境可访问的 HTTPS 资源(或同源安全资源),页面应能正常展示图片,不应把本机回环地址暴露给浏览器。
## 实际结果
列表接口返回图片地址:
`http://127.0.0.1:9091/profile/upload/2026/07/22/Snipaste_2026-07-20_10-50-27_20260722203721A001.png`
当前页面为 HTTPSChrome 将其判定为 Mixed Content图片请求失败DevTools 记录 `net::ERR_CONNECTION_REFUSED`。页面截图中该记录的图片未正常加载。
## 浏览器证据
- 页面截图:[JF-EN-005-outdoor-list-baseline.png](../screenshots/JF-EN-005-outdoor-list-baseline.png)
- `GET /api/shihezi/cms/outdoor-fair/list?current=1&pageSize=20`HTTP 200响应对象 `id=14``photoUrl` 为上述 `http://127.0.0.1:9091/...` 地址。
- Chrome Console`Mixed Content: The page at 'https://test.xjshzly.longbiosphere.com/shihezi/jobfair/jobfair/outdoorfair' was loaded over HTTPS, but requested an insecure element 'http://127.0.0.1:9091/...'.`
- Chrome Console`Failed to load resource: net::ERR_CONNECTION_REFUSED`
- Chrome DevTools Issues`Mixed content: load all resources via HTTPS to improve the security of your site (count: 1)`
- 页面只读 DOM 检查:该图片 `complete=true`,但 `naturalWidth=0``naturalHeight=0`,证实资源没有成功加载。
### 管理端同一资源的复现
监管管理员打开 `/shihezi/jobfair/jobfair/outdoorfair` 时,`测试` 招聘会同样返回并渲染该本机地址:
```text
http://127.0.0.1:9091/profile/upload/2026/07/22/Snipaste_2026-07-20_10-50-27_20260722203721A001.png
```
管理端 Network request `209` 返回 `net::ERR_CONNECTION_REFUSED`Console 报告 HTTPS 页面请求不安全 HTTP 元素的 Mixed Content 警告。该问题因此同时影响企业端和管理端展示。
- 管理端截图:[JF-AD-005-admin-outdoor-list.png](../screenshots/JF-AD-005-admin-outdoor-list.png)
## 影响范围
该招聘会照片在测试环境企业端不可见;如果相同数据进入公开端、管理端或分享页面,可能造成多个端图片缺失。`127.0.0.1` 还会让不同访问者请求各自设备的本地服务属于环境地址污染HTTPS 页面加载 HTTP 资源也降低传输安全性。
## 初步定位
问题已出现在户外招聘会列表接口返回的 `photoUrl` 数据中,而非前端图片组件拼接错误。优先检查上传文件 URL 生成配置、历史数据迁移/清洗以及反向代理下的公网资源地址转换。
## 建议
清理 `id=14` 及同类记录中的本机地址,重新绑定可访问的 HTTPS 图片;上传服务统一生成环境无关的相对路径或 HTTPS 公网地址,并在接口/管理端保存前拒绝 `localhost``127.0.0.1` 等回环主机。