# 混合内容扫描：找出 HTTPS 页面里的 http:// 资源

> 扫描 HTTPS 页面里仍通过 http:// 加载的脚本、样式、图片、iframe 和表单，区分会被浏览器拦截的主动内容。

Source: https://ssl.sh/zh/tools/mixed-content-scanner/
Last updated: 2026-11-10

找出 HTTPS 页面里仍然通过 http:// 加载的资源，以及其中哪些会被浏览器拦截。

混合内容扫描检查 HTTPS 页面里还有没有通过 `http://` 加载的资源。输入完整的页面网址，点 **扫描页面**，工具会列出每个不安全的脚本、样式表、图片、iframe 和表单地址，并单独统计会被浏览器拦截的主动内容。

## 怎么用

1. 输入页面网址，比如 `https://example.com/blog/`。不同模板的页面都要测：首页、文章页、商品页、下单页。
2. 点 **扫描页面**。
3. 逐个修改列出的地址，再扫一遍。

## 主动与被动混合内容

- **主动内容**能改变整个页面：脚本、样式表、iframe、字体、`fetch`/XHR 请求。浏览器会直接拦截，功能就坏了。
- **被动内容**只是显示，不能改页面：图片、音频、视频。新版 Chrome 和 Firefox 会先尝试用 HTTPS 加载，失败就拦截；无论哪种情况，页面都不再算“安全”。

## 怎么修

1. 把模板、主题、数据库里写死的 `http://` 改成 `https://`（自己站内的文件可以用相对地址）。WordPress 之类的站点，换域名或上 HTTPS 后数据库里经常残留旧地址。
2. 第三方资源（统计代码、广告、图床、老 CDN）确认支持 HTTPS，不支持就换掉。
3. 兜底：返回响应头 `Content-Security-Policy: upgrade-insecure-requests`。
4. 全站干净之后，开启 [HSTS](https://ssl.sh/zh/tools/hsts-checker/)，浏览器就再也不会发明文请求。

扫描只读取服务器返回的 HTML，不执行 JavaScript。单页应用还要在浏览器控制台里看[混合内容警告](https://ssl.sh/zh/errors/mixed-content-warning/)。


## FAQ

**地址栏没有锁，但扫描什么都没发现？**

不安全的请求多半是 JavaScript 在页面加载后发出的，或者来自别的页面。打开浏览器开发者工具的控制台，混合内容警告会带上具体网址。

**只加 upgrade-insecure-requests 就够了吗？**

它让浏览器把 http:// 子资源改用 HTTPS 请求，能很快修好大部分页面，前提是这些资源本身支持 HTTPS。长期还是要把模板和数据库里的地址改掉。

**指向其他网站的 http:// 链接算混合内容吗？**

不算。用户点击的普通链接（a href）是跳转，不是子资源。但提交到 http:// 的表单会被标出来，因为提交的数据会明文传输。
