3.4 KiB
BUG-006:企业端户外招聘会列表返回本机 HTTP 图片地址并触发混合内容失败
- 严重级别:P2(线上页面资源不可用且存在安全配置问题)
- 状态:代码已修复;历史图片数据待数据管理员确认/清理
- 环境:test
- 角色:PC 企业端(已登录测试企业角色)
- 入口:
/shihezi/jobfair/jobfair/outdoorfair - 招聘会:
id=14,标题“测试” - 发现时间:2026-07-25
复现步骤
- 使用测试企业角色进入企业管理端。
- 打开“招聘会管理 → 户外招聘会”。
- 在列表中找到标题为“测试”的招聘会记录。
- 观察“招聘会照片”列,并查看 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
当前页面为 HTTPS,Chrome 将其判定为 Mixed Content;图片请求失败,DevTools 记录 net::ERR_CONNECTION_REFUSED。页面截图中该记录的图片未正常加载。
浏览器证据
- 页面截图: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 时,测试 招聘会同样返回并渲染该本机地址:
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 警告。该问题因此同时影响企业端和管理端展示。
影响范围
该招聘会照片在测试环境企业端不可见;如果相同数据进入公开端、管理端或分享页面,可能造成多个端图片缺失。127.0.0.1 还会让不同访问者请求各自设备的本地服务,属于环境地址污染;HTTPS 页面加载 HTTP 资源也降低传输安全性。
初步定位
问题已出现在户外招聘会列表接口返回的 photoUrl 数据中,而非前端图片组件拼接错误。优先检查上传文件 URL 生成配置、历史数据迁移/清洗以及反向代理下的公网资源地址转换。
建议
清理 id=14 及同类记录中的本机地址,重新绑定可访问的 HTTPS 图片;上传服务统一生成环境无关的相对路径或 HTTPS 公网地址,并在接口/管理端保存前拒绝 localhost、127.0.0.1 等回环主机。