必须立即修改CSS中所有含http://的写法,包括@import、background、@font-face、list-style-image等,因其混合内容不报错却会被浏览器拦截为blocked:mixed-content,且需通过Network面板筛选定位。

直接改 background: url(http://) 和 @import "http://" 这两类写法,其他“看起来安全”的地方反而最容易漏掉。
为什么CSS里的http://比HTML更难发现
CSS 中的混合内容不会在控制台报红,也不会出现在初始 HTML 源码里。浏览器拦截时只在 Network 面板显示 blocked:mixed-content,且 Initiator 显示为某 CSS 文件名 + 行号——但你得先筛出它。
- 打开 Chrome DevTools → Network → 勾选
Preserve log - 刷新页面,在 Filter 输入框直接输入
http:// - 重点看 Status 是
blocked:mixed-content的请求,点开后看Initiator列指向哪个.css文件及具体行数 - 特别注意:@import、@font-face、background、border-image、list-style-image 全都可能藏
http://
哪些CSS写法必须立刻改
以下写法只要出现 http:// 字符串,就必然触发拦截,没有例外:
-
@import "http://fonts.googleapis.com/css?family=Roboto";→ 改成@import "https://fonts.googleapis.com/css?family=Roboto"; -
background: url(http://cdn.example.com/bg.jpg);→ 改成background: url(https://cdn.example.com/bg.jpg); -
@font-face { src: url(http://cdn.example.com/font.woff2); }→ 改成@font-face { src: url(https://cdn.example.com/font.woff2); } -
list-style-image: url(http://example.com/bullet.png);→ 同样必须显式加https://
别用 //cdn.example.com/bg.jpg —— 多数 CDN 已关闭 HTTP 端口,请求会直接返回 net::ERR_CONNECTION_REFUSED;本地 file:// 打开时还会变成 file://cdn.example.com/,彻底失效。
立即学习“前端免费学习笔记(深入)”;
后端模板和构建工具里的隐性陷阱
很多 http:// 不是手写的,而是模板函数或配置拼出来的:
- PHP 模板中:
echo 'http://' . $host . '/style.css';→ 改用is_ssl() ? 'https://' : 'http://'或框架的url()函数 - Thymeleaf:
th:href="${'http://' + domain + '/logo.png'}"→ 改成th:href="@{'/' + ${logoPath}}"并确保logoPath已含协议 - Webpack:
publicPath: 'http://cdn.example.com/'→ 必须改成publicPath: 'https://cdn.example.com/' - Vite:
base: 'http://cdn.example.com/'→ 同理,硬编码协议必须为https://
这些地方改完后,务必重新构建并检查生成的 CSS 文件里是否还残留 http:// 字符串——构建产物才是最终加载源。
修复后仍 404 或证书错误?重点查三类“假 HTTPS”
显式写死 https:// 后还失败,大概率不是路径问题,而是目标服务没真正支持 HTTPS:
- CDN 域名(如
cdn.example.com)证书过期或未开启 HTTPS → 浏览器报net::ERR_CERT_DATE_INVALID或直接 404 - 第三方字体/图标服务(如老旧的 iconfont.cn 接口)压根不响应 HTTPS → 替换 URL 后请求发出去但返回空或 404
- OSS 类资源带 query 参数(如
https://oss.example.com/a.jpg?x-oss-process=image/resize,p_50)→ CDN 回源规则未适配 HTTPS,后端拒绝处理
真正能落地的做法:所有 https:// 必须对应一个可访问、证书有效、TLS 1.2+ 支持的终端。做不到就换源,别硬扛。


















