---
title: 混合内容（Mixed Content）修复：定位 → 改法 → 验证
url: https://www.paibaowork.com/ssl/troubleshoot/mixed-content/
last_verified: 2026-10-13
version: v1.0
---

## 什么是混合内容（一句话）

**混合内容（Mixed Content）**：页面本身是 `https://`，但里面的图片、脚本、样式、视频还是用 `http://` 地址加载。浏览器会拦截或自动升级这些资源，严重时显示「不安全」、页面排版错乱、询盘表单点不动【官】。

> [!NOTE] 混合内容不是证书问题
> 出现混合内容时，证书本身通常是好的——问题出在**页面里引用的资源**。所以别去重装证书，先按下面的三步：定位 → 改法 → 验证。

| 你看到的样子 | 背后发生了什么 | 对生意的影响 |
|---|---|---|
| 网址是 https，地址栏却写「不安全」 | 页面里还有 http 资源，浏览器降级提示 | 客户信任打折，Chrome 154（2026-10 起）对无 HTTPS 站点默认先弹警告，氛围只会更严【官】 |
| 部分图片不显示、显示裂图 | http 图片被浏览器拦截 | 产品图、资质图缺失，客户看不到你在卖什么 |
| 页面排版错乱、样式错位 | http 样式表（CSS）被拦 | 网站显得「像坏了」，专业感归零 |
| 询盘表单、在线客服点不动 | http 脚本（JS）被拦 | 客户想联系你，按钮没反应——直接丢询盘 |
| F12 控制台有 `Mixed Content` 黄/红提示 | 浏览器把每个 http 资源都列了出来 | 这就是你的「待修清单」 |

## 浏览器怎么处理混合内容（决定了你会看到什么）

浏览器把混合内容分成两类，处理方式不同【官】：

| 类别 | 包含哪些资源 | 浏览器怎么处理 | 你看到的结果 |
|---|---|---|---|
| 主动内容（blockable） | 脚本、样式表、iframe、AJAX 请求 | **直接拦截**，不加载 | 表单点不动、排版错乱、空白框 |
| 被动内容（passive/display） | 图片、音频、视频 | 先尝试**自动升级**为 https 加载，升级不了才拦截 | 大部分图片还能显示，个别裂图 |

所以「图片还能看、但表单点不动」很常见——不是你没中招，是浏览器帮你兜了一半。只要 Console 里有 `Mixed Content`，都要按下面的步骤改干净。

## 第 1 步：定位（三种找法，任选）

1. **开发者工具（最准）**：用 Chrome 打开出问题的页面，按 `F12`（Mac：`Option + Command + I`）打开开发者工具，点 **Console（控制台）**，找带 `Mixed Content` 字样的黄色/红色提示——它会把具体的 `http://` 地址写出来。
2. **看源代码（最快）**：在网页上右键 → **查看网页源代码**，按 `Ctrl + F` 搜索 `http://`，逐个确认哪些是「页面资源」而不是普通文字。
3. **一条命令（适合批量查）**：

```bash
curl -s https://你的域名/ | grep -Eo '(src|href)="http://[^"]+"' | sort -u
```

把首页 HTML 里所有 `http://` 的图片、脚本、样式、链接列出来。注意：这条命令只看首页的静态 HTML，动态加载的内容（比如插件后插入的客服窗口）抓不到，以第 1 种方法的控制台提示为准。

**把找到的资源分类**，不同类别的改法不一样：

| 资源类型 | 典型来源 | 被拦后果 | 改法方向 |
|---|---|---|---|
| 图片（`<img src>`） | 文章、产品详情里写死的旧域名地址 | 裂图、图不显示 | 换成 `https://` 地址，或改成站内相对路径 |
| 脚本（`<script src>`） | 统计代码、客服组件、旧插件 | 表单、客服按钮点不动 | 到供应商后台换 https 版本的代码 |
| 样式（`<link href>`） | 模板里写死的 http CDN | 排版错乱 | 换成 https 的 CDN 地址 |
| 内嵌框（`iframe`、视频） | 地图、视频、外部页面 | 显示空白框 | 换成 https 的嵌入地址 |
| 表单接口 / AJAX | 老代码里写死的 http 接口 | 提交失败、报错 | 改成 https 域名或相对路径 |

## 第 2 步：改法（按这个顺序来）

### ① 先改「网站地址」这一处总开关

很多网站（尤其 WordPress）在后台存着一个「网站地址」，所有页面资源都按它拼接。它还是 `http://` 的话，改别的地方都白改：

- WordPress：**设置 → 常规**，把「WordPress 地址」和「站点地址」两处都改成 `https://`。

### ② 批量替换正文里写死的 http 链接

文章、产品详情里手工粘贴过的 `http://你的域名/...` 图片地址，需要批量替换成 `https://`：

- WordPress 可以用数据库搜索替换类插件完成；**操作前先备份数据库**——搜索替换是整库操作，改错了要能退回来。

> [!WARNING] 改数据库之前先备份
> 这是本页唯一「有破坏力」的一步。备份方法：用主机面板/插件的备份功能导出一次数据库，或让技术人员先 `mysqldump` 一份。没有备份，不要动数据库。

改前改后长这样（替换时尽量带上完整域名，缩小误伤范围）：

```html
<!-- 改前：写死的 http 地址 -->
<img src="http://你的域名/uploads/2024/product.jpg" />

<!-- 改后（方案一）：换成 https -->
<img src="https://你的域名/uploads/2024/product.jpg" />

<!-- 改后（方案二，更省心）：改成站内相对路径，换域名/换协议都不用再改 -->
<img src="/uploads/2024/product.jpg" />
```

### ③ 第三方资源换成 https 版本

在线客服、地图、统计代码这类「别人给的代码」：到对应供应商的后台，重新复制一份 https 版本的嵌入代码换上去。旧代码里写死的 `http://` 供应商地址，现在基本都有 https 版。

### ④ 用 Cloudflare 的，打开「自动 HTTPS 重写」兜底

域名接入 Cloudflare 的，可以在 **SSL/TLS → 边缘证书** 里打开 **Automatic HTTPS Rewrites（自动 HTTPS 重写）**：浏览器请求 http 资源时由 Cloudflare 自动改写成 https。注意它只是**兜底**——第 ② ③ 步把源内容改干净才是根治，否则一旦哪天不走 Cloudflare，问题原样回来。

![【示意图】SSL/TLS → 边缘证书 → 打开 Always Use HTTPS 和自动 HTTPS 重写](/ssl/images/xarticle/05-always-https.png)

### ⑤ 顺手升级主题、插件和 CDN

老主题、老插件经常在代码里写死 http 地址，升级到新版本大多已经修好；用了 CDN 的，到 CDN 后台把资源协议改成「跟随页面协议」。

## 第 3 步：验证（四件事，五分钟）

1. **控制台干净**：回到出问题的页面，按 `Ctrl + Shift + R` 强制刷新，Console 里不再出现 `Mixed Content`。
2. **地址栏正常**：点地址栏左侧图标，看到「连接是安全的」→「证书有效」。

![【真实截图】Chrome 点地址栏左侧图标 → 连接是安全的 → 证书有效](/ssl/images/guide/r08_sitepopup2.png)

3. **关键页面走一遍**：首页、产品页、询盘表单各开一次，**表单实际提交一次测试**——脚本被拦时，页面看起来正常但按钮没反应，只有真点一次才知道。
4. **多设备再试**：手机流量打开一次，最好用一台安卓手机；再按上面的命令抓一次首页，`http://` 资源应为空。

> [!TIP] 混合内容最烦的是「修完又冒出来」
> 因为业务同事新发一篇带 http 图片的文章，问题就会回来。建议定一条小规矩：**发布前在编辑器里搜一次 `http://`**；有条件的话，每月用第 1 步的控制台检查一遍重点页面。

## 不同的建站方式，修法落在哪

| 你的建站方式 | 修法落点 | 注意 |
|---|---|---|
| WordPress 自建站 | 设置 → 常规改两处地址；用数据库搜索替换插件改正文；升级主题和插件 | 替换前先备份数据库；不要手改 `wp-config.php` 里的地址 |
| SaaS 建站平台 | 平台一般自动处理资源；重点查「自定义代码 / 嵌入代码」区块里的 http 链接 | 平台编辑器里搜一次 `http://` |
| 自建站 / 外包开发 | 让开发把模板里的 http 地址改成相对路径；批量替换内容数据 | 改完做一次全站抓取验证 |
| 用了 Cloudflare | SSL/TLS → 边缘证书 → 打开自动 HTTPS 重写 | 兜底不等于根治，源内容仍要改 |

## 常见坑（对照处理）

| 症状 | 真实原因 | 怎么修 |
|---|---|---|
| 控制台提示的资源改过了，但提示还在 | 浏览器缓存、CDN 缓存、插件缓存 | 强制刷新；清 CDN 缓存；插件缓存清一次 |
| 图片地址已经是 https 但还是裂图 | 不是混合内容，是图片本身 404 / 路径错 | 打开图片地址单独看一眼，404 就修路径 |
| 数据库替换后页面乱了 | 替换规则太宽，误伤了正文文字 | 用备份还原，替换时带上完整域名缩小范围 |
| 表单按钮还是没反应 | 脚本是 https 但接口地址写死成 http 的 IP:端口 | 把接口地址改成 https 域名或相对路径 |
| 电脑正常、部分手机图片不显示 | 可能是证书链不完整，不是混合内容 | 用 SSL Labs 查 Chain issues，见下面「别混着修」 |
| 只有某些页面报 Mixed Content | 模板/插件只在特定页面输出 http 代码 | 用第 1 步控制台定位到具体页面和资源，逐个改 |

## 别和「证书问题」混着修

| 对比项 | 混合内容 | 证书问题 |
|---|---|---|
| 网址开头 | 是 https | 是 https（但证书本身有问题） |
| 现象 | 地址栏「不安全」、图片不显示、表单点不动 | 整页红屏，或电脑正常、手机报错 |
| 线索在哪 | F12 → Console 里的 `Mixed Content` | 红屏错误码、SSL Labs 的 Chain issues |
| 修哪里 | 页面里引用的资源地址 | 证书本身、证书链、域名覆盖 |

分不清是哪种，按[浏览器显示「不安全」的 6 种原因与排查](/ssl/troubleshoot/not-secure/)逐项对照；红屏类故障先看[四种 SSL 故障实景演示](/ssl/troubleshoot/four-failures/)。

## 现在要做的事

- 不确定自己网站现在是什么状态：先做一次免费的 [HTTPS 体检](/tools/ssl-check/)；
- 证书刚过期导致红屏：先按[证书过期 5 分钟应急](/ssl/troubleshoot/expired/)恢复，再回来修混合内容；
- 错误码看不懂：[SSL 错误码速查](/ssl/troubleshoot/error-codes/) 一码一行；
- 页面里 http 资源太多、自己改不动：可以把本页复制给 AI 智能体（页面顶部有一键复制按钮），让它带你逐条改；也可以[预约 30 分钟诊断](/booking)，或直接看 [SSL 证书终身维护服务](/services/ssl-maintenance/)（600 元/域名 · 长期统一价），把修复和后续监控一起交出去。

## 常见问题

### 网址是 https，为什么还提示「不安全」？

这是混合内容：页面本身是 https，但里面的图片、脚本、样式还是用 http 加载。浏览器会拦截或自动升级这些资源，并在控制台给出 Mixed Content 提示。证书本身没有问题，要修的是页面里引用的资源地址，不是证书。

### 图片还能正常显示，是不是就不用管混合内容了？

不一定。浏览器对图片、音视频这类被动资源会先尝试自动升级成 https 加载，所以有时看不出来；但脚本、样式、iframe 这类主动资源是直接拦截的，表现为表单点不动、排版错乱。判断标准只有一个：控制台里还有没有 Mixed Content 提示，有就要改干净。

### 批量替换 http 链接安全吗？

按规矩做就安全：动手前先备份数据库，替换时带上完整域名缩小范围，改完把首页、产品页和表单各验证一次。不要直接手改代码文件或数据库结构，用数据库搜索替换类插件完成正文替换即可。

### 开了 Cloudflare 的自动 HTTPS 重写，还需要改页面吗？

需要。自动 HTTPS 重写是兜底：访客经过 Cloudflare 时把 http 请求改写为 https，但源站内容里的 http 地址还在，哪天不走 Cloudflare 问题就原样回来。正确顺序是先把网站地址和正文里的资源改成 https，再开着它兜底。

### 怎么确认混合内容真的修好了？

四步：强制刷新页面后控制台不再出现 Mixed Content；点地址栏图标看到连接是安全的、证书有效；首页、产品页和询盘表单各走一遍，表单要实际提交一次测试；最后用手机流量再打开一次，最好找一台安卓手机。

## 资料来源与核实记录

| 事实 | 来源 | 核实日期 |
|---|---|---|
| 混合内容（Mixed content）的定义与浏览器处理方式：主动内容拦截、被动内容自动升级 | https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content | 2026-10-10 |
| Chrome 154（2026 年 10 月）起默认「始终使用安全连接」（公告 2025-10-28） | https://security.googleblog.com/2025/10/https-by-default.html | 2026-10-10 |
| Cloudflare 自动 HTTPS 重写（Automatic HTTPS Rewrites）：把页面中的 http 资源改写为 https | https://developers.cloudflare.com/ssl/edge-certificates/additional-options/automatic-https-rewrites/ | 2026-10-10 |
| WordPress 官方文档：设置 → 常规 中的「WordPress 地址」与「站点地址」 | https://wordpress.org/documentation/article/settings-general-screen/ | 2026-10-10 |
| 本站《SSL 部署完全指南》第 10.2 节：修复混合内容的查找方法与改法清单 | https://www.paibaowork.com/ssl/deploy/ssl-guide/ | 2026-10-10 |

## 更新记录

- 2026-10-13 · v1.0：上线：混合内容定位三法（控制台 / 源码 / curl）、按资源类型的改法顺序、五分钟验证清单、与证书问题的区分表。
