这个坑值得记一笔。GSC 的 HTTPS 报告提示混合内容,页面源码里找不到 http 地址,最后在打包后的 CSS 里发现 background-image 还是 http。

刚开始盯着「内联样式由后端拼装,字符串里带的是旧域名」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。相对协议地址 //img.example.com 被构建工具补成了 http;老主题的 CSS 里写死了 http 背景图,构建后没有替换;浏览器只在实际渲染到该元素时才请求,静态检查容易漏。

动手时先在 CSS 文件里搜索 http 资源

grep -rn 'url(http://' assets/css/*.css | head

批量替换成 https 并重新打包

sed -i 's#url(http://#url(https://#g' assets/css/*.css

等前面都确认过,再用无头浏览器抓一次完整请求列表

python -c "import json;print(open('netlog.json').read().count('http://'))"

别只看报错消失,验证要多做一步。CSS 替换后重新抓取,混合内容告警在下次巡检时消失,背景图的抓取量也恢复正常。

提醒一点。混合内容排查不能只看 HTML,样式表、字体和脚本里的地址都要扫一遍,越深的引用越容易被漏掉。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189