← 返回题目列表

HTTPS 页面中的混合内容是什么?浏览器为什么会阻止部分 HTTP 资源?

中等 第 21 / 29 题 更新于 2026/08/02
HTTPS浏览器安全混合内容

简化版

混合内容是指 HTTPS 页面中加载了 HTTP 资源。

如果 HTTPS 页面引用 HTTP 脚本、样式、iframe、XHR 等主动内容,攻击者可以篡改这些资源,从而破坏整个页面安全,所以浏览器通常会阻止。

图片、视频等被动内容历史上可能允许加载或自动升级,但现代浏览器也越来越严格。解决方式是全站 HTTPS、资源 URL 改为 HTTPS、使用 CSP 的 upgrade-insecure-requests 或修复第三方资源。

详细版

示例:

<script src="http://cdn.example.com/app.js"></script>
<img src="http://img.example.com/a.png">

页面本身是 HTTPS,但资源走 HTTP。

脚本属于主动内容,一旦被中间人篡改,就能执行任意代码,因此风险很高。

图片更多影响展示,但也可能泄露信息或被替换。

浏览器控制台常见报错类似:

Mixed Content: The page was loaded over HTTPS, but requested an insecure script.

排查时要看页面源代码、接口返回内容、第三方 SDK、CSS 中的 url(http://...)

完整版教学

1. 先解释混合内容为什么危险

HTTPS 保护的是页面和服务端之间的传输。

但如果页面里又加载 HTTP 资源,这部分资源不受 TLS 保护。

攻击者可以在网络中篡改 HTTP 资源。

如果被篡改的是 JavaScript,攻击者就可能控制整个页面。

HTTPS 页面只要执行了不安全脚本,页面整体安全性就会被短板拖垮。

2. 主动内容和被动内容

混合内容通常按风险分成两类。

主动内容会影响页面执行逻辑。

例如:

  • JavaScript
  • CSS
  • iframe
  • XHR 或 fetch
  • WebSocket 明文连接

被动内容更多用于展示。

例如:

  • 图片
  • 音频
  • 视频

主动内容风险更高,浏览器通常直接阻止。

3. 一个典型例子

页面地址:

https://www.example.com

页面里写了:

<script src="http://cdn.example.com/app.js"></script>

这意味着主页面是加密传输,但核心脚本是明文传输。

中间人可以把 app.js 替换成恶意脚本。

恶意脚本运行后,可以读取页面内容、窃取 token、发起请求、修改 DOM。

所以浏览器会强制拦截这类资源。

4. 浏览器处理策略

资源类型风险常见处理
script阻止
stylesheet阻止或严格限制
iframe阻止
fetch/XHR阻止
image可能允许、警告或自动升级
video/audio策略较宽但逐渐收紧

实际策略会随浏览器版本变化,但方向是越来越严格。

5. 如何修复混合内容

修复思路是让所有子资源都走安全通道。

  • 把资源 URL 改为 https://
  • 使用协议相对 URL 的历史写法要谨慎,更推荐明确 HTTPS。
  • 检查 CSS 文件里的 url(http://...)
  • 检查富文本、CMS、第三方 SDK 注入的链接。
  • 配置 CDN HTTPS 证书。
  • 使用 CSP 自动升级不安全请求。

示例 CSP:

Content-Security-Policy: upgrade-insecure-requests

它会让浏览器尝试把 HTTP 子资源升级为 HTTPS。

6. 和 HSTS 的区别

HSTS 告诉浏览器以后访问某个站点时强制使用 HTTPS。

混合内容处理关注的是 HTTPS 页面内部加载的子资源。

二者可以配合,但不是同一个机制。

例如主站开启 HSTS,不代表第三方图片域名也一定支持 HTTPS。

因此全站 HTTPS 迁移时,要把主域、静态资源域名、API 域名、第三方资源一起梳理。

7. 常见误区与追问

  • 误区:主页面是 HTTPS 就绝对安全。 如果加载 HTTP 主动内容,页面仍可能被攻破。
  • 误区:只有 script 会造成混合内容。 CSS、iframe、XHR、字体、图片等都可能触发。
  • 误区:把 HTTP 资源放到 CDN 就安全。 CDN URL 也必须使用 HTTPS,并正确配置证书。
  • 追问:为什么图片有时不被直接阻止? 图片一般不执行代码,风险低于脚本,但仍可能泄露或被替换。
  • 追问:CSP upgrade-insecure-requests 有什么用? 让浏览器自动尝试把子资源 HTTP 请求升级为 HTTPS。
  • 追问:混合内容和跨域是一回事吗? 不是,混合内容关注安全协议,跨域关注源策略。

8. 加强记忆

混合内容记成“HTTPS 页面里混进了 HTTP 短板”。

主动内容一旦不安全,整页安全就不成立。