首页/安全/加密与证书速查/混合内容(Mixed Content)处理
TLS 与 HTTPS60 条

混合内容(Mixed Content)处理

HTTPS 页面引用 HTTP 子资源时会被浏览器拦截或警告:脚本、样式等 active 内容直接阻断,图片等 passive 内容可能被升级或降级提示。

加密与证书速查安全更新于 2026-10-13

混合内容是什么

混合内容是 HTTPS 页面里引用了 HTTP 子资源导致的问题。浏览器按风险把子资源分成两类:脚本、iframe、样式等 active 内容被直接阻断,图片、音视频等 passive 内容可能被自动升级或仅给出警告。修复方向是把资源地址改为 HTTPS,或用内容安全策略让浏览器自动升级请求;被注入的主动内容可以执行任意脚本,因此这属于安全缺陷而不是外观问题。

基本信息

active 内容脚本、iframe、样式等,默认被直接阻断
passive 内容图片、音视频、字体,可能被自动升级或提示
修复方式资源地址改 HTTPS,或用 CSP 自动升级
排查入口浏览器开发者工具的 Console 与 Network 面板

典型使用场景

  • 站点整体迁移 HTTPS 后,检查内页是否残留 HTTP 引用
  • 第三方资源(统计脚本、字体、地图)不支持 HTTPS 时的取舍
  • 邮件模板与静态资源清单中的 HTTP 引用排查
  • 小程序或 App 内嵌页面的资源协议一致性检查
  • 把混合内容纳入上线前的发布检查项

统计页面中的 HTTP 引用

统计页面中的 HTTP 引用
curl -s https://example.com/page.html | grep -c 'http://'          # 粗略统计
curl -s https://example.com/ | grep -o 'http://[^" ]*' | sort -u | head
# 逐条定位请用浏览器开发者工具的 Network 面板过滤

内容类型与处理

类型示例浏览器行为
active脚本、样式、iframe默认阻断,页面功能缺失
passive图片、音视频、字体可能升级为 HTTPS 或仅警告
导航链接与表单提交不算混合内容,但会削弱保护
强制升级指令只能升级请求,第三方资源本身不支持 HTTPS 时会直接加载失败;启用前先确认依赖方,或先用只报告的观察模式评估影响面。

修复顺序建议

  • 先从访问日志与开发者工具收集实际被阻断的资源清单
  • 优先处理自家域名的资源,改协议或改为相对地址
  • 对第三方资源要求对方提供 HTTPS 地址或更换供应商
  • 最后再打开强制升级与阻断策略,避免一次性引入大量故障
用跳转把 HTTP 资源改成 HTTPS 只能救回部分内容:主动内容在跳转前已被阻断一次,而且跳转本身会先发出一次明文请求,存在性能与隐私损耗。

易错点

  • 误以为跳转能解决混合内容:主动内容在跳转前已被阻断,且明文请求已经发出一次
  • 只修复首页而漏掉内页、邮件模板与静态资源清单中的 HTTP 引用
  • 启用强制升级前未确认第三方资源支持 HTTPS,导致页面整块功能失效
  • 忽略页面内导航链接的协议:仍指向 HTTP 时访问会被降级,抵消 HTTPS 的保护
  • 把混合内容当作外观问题:被注入的主动内容可执行任意脚本,属于安全缺陷

数据来源与参考

  • W3C Mixed Content 规范
  • MDN:upgrade-insecure-requests
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌