教程 · 混合内容
混合内容(Mixed Content)修复:定位 → 改法 → 验证
证书没问题,问题在页面里:先定位是哪几个 http 资源被拦截,再按顺序改干净——改数据库前记得先备份。
本文目录 · 9 节
先说结论
- 混合内容 = 页面是 https、资源还是 http:脚本、样式、iframe 这类主动资源会被浏览器直接拦截(表单点不动、排版错乱),图片、音视频这类被动资源会先自动升级、升级不了才拦。
- 定位靠三种方法:F12 控制台搜 Mixed Content、查看源代码搜 http://、一条 curl 命令把首页里的 http 资源列出来;再按图片 / 脚本 / 样式 / iframe / 接口分类。
- 改法有顺序:先改「网站地址」总开关(WordPress 设置 → 常规两处地址),再批量替换正文里的 http 链接(先备份数据库),第三方资源换 https 版本,Cloudflare 自动 HTTPS 重写只能兜底不能根治。
- 验证四件事:控制台不再出现 Mixed Content、地址栏「连接是安全的」、关键页面表单实际提交一次、手机(最好安卓)再试一次;别把混合内容和证书链问题混着修。
🤖 把这篇交给你的 AI 智能体
复制后粘贴给你常用的 AI 智能体(豆包、ChatGPT、Claude、Codex 等),它会按同样的步骤带你做完,并在每一步改动前先征求你的同意。不要把密码、密钥发到对话里。
查看将要复制的提示词
什么是混合内容(一句话)
混合内容(Mixed Content):页面本身是 https://,但里面的图片、脚本、样式、视频还是用 http:// 地址加载。浏览器会拦截或自动升级这些资源,严重时显示「不安全」、页面排版错乱、询盘表单点不动【官】。
| 你看到的样子 | 背后发生了什么 | 对生意的影响 |
|---|---|---|
| 网址是 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. 一条命令(适合批量查):
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 可以用数据库搜索替换类插件完成;操作前先备份数据库——搜索替换是整库操作,改错了要能退回来。
改前改后长这样(替换时尽量带上完整域名,缩小误伤范围):
<!-- 改前:写死的 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,问题原样回来。

⑤ 顺手升级主题、插件和 CDN
老主题、老插件经常在代码里写死 http 地址,升级到新版本大多已经修好;用了 CDN 的,到 CDN 后台把资源协议改成「跟随页面协议」。
第 3 步:验证(四件事,五分钟)
- 1. 控制台干净:回到出问题的页面,按
Ctrl + Shift + R强制刷新,Console 里不再出现Mixed Content。 - 2. 地址栏正常:点地址栏左侧图标,看到「连接是安全的」→「证书有效」。

- 3. 关键页面走一遍:首页、产品页、询盘表单各开一次,表单实际提交一次测试——脚本被拦时,页面看起来正常但按钮没反应,只有真点一次才知道。
- 4. 多设备再试:手机流量打开一次,最好用一台安卓手机;再按上面的命令抓一次首页,
http://资源应为空。
不同的建站方式,修法落在哪
| 你的建站方式 | 修法落点 | 注意 |
|---|---|---|
| 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 故障实景演示。
现在要做的事
- 不确定自己网站现在是什么状态:先做一次免费的 HTTPS 体检;
- 证书刚过期导致红屏:先按证书过期 5 分钟应急恢复,再回来修混合内容;
- 错误码看不懂:SSL 错误码速查 一码一行;
- 页面里 http 资源太多、自己改不动:可以把本页复制给 AI 智能体(页面顶部有一键复制按钮),让它带你逐条改;也可以预约 30 分钟诊断,或直接看 SSL 证书终身维护服务(600 元/域名 · 长期统一价),把修复和后续监控一起交出去。
答疑
常见问题
网址是 https,为什么还提示「不安全」?
这是混合内容:页面本身是 https,但里面的图片、脚本、样式还是用 http 加载。浏览器会拦截或自动升级这些资源,并在控制台给出 Mixed Content 提示。证书本身没有问题,要修的是页面里引用的资源地址,不是证书。
图片还能正常显示,是不是就不用管混合内容了?
不一定。浏览器对图片、音视频这类被动资源会先尝试自动升级成 https 加载,所以有时看不出来;但脚本、样式、iframe 这类主动资源是直接拦截的,表现为表单点不动、排版错乱。判断标准只有一个:控制台里还有没有 Mixed Content 提示,有就要改干净。
批量替换 http 链接安全吗?
按规矩做就安全:动手前先备份数据库,替换时带上完整域名缩小范围,改完把首页、产品页和表单各验证一次。不要直接手改代码文件或数据库结构,用数据库搜索替换类插件完成正文替换即可。
开了 Cloudflare 的自动 HTTPS 重写,还需要改页面吗?
需要。自动 HTTPS 重写是兜底:访客经过 Cloudflare 时把 http 请求改写为 https,但源站内容里的 http 地址还在,哪天不走 Cloudflare 问题就原样回来。正确顺序是先把网站地址和正文里的资源改成 https,再开着它兜底。
怎么确认混合内容真的修好了?
四步:强制刷新页面后控制台不再出现 Mixed Content;点地址栏图标看到连接是安全的、证书有效;首页、产品页和询盘表单各走一遍,表单要实际提交一次测试;最后用手机流量再打开一次,最好找一台安卓手机。
核实
资料来源与核实记录
价格、政策与版本信息均注明来源和核实日期。
| 事实 | 来源 | 核实日期 |
|---|---|---|
| 混合内容(Mixed content)的定义与浏览器处理方式:主动内容拦截、被动内容自动升级 | MDN | 2026-10-10 |
| Chrome 154(2026 年 10 月)起默认「始终使用安全连接」(公告 2025-10-28) | Google 安全博客 | 2026-10-10 |
| Cloudflare 自动 HTTPS 重写(Automatic HTTPS Rewrites):把页面中的 http 资源改写为 https | Cloudflare Docs | 2026-10-10 |
| WordPress 官方文档:设置 → 常规 中的「WordPress 地址」与「站点地址」 | wordpress.org | 2026-10-10 |
| 本站《SSL 部署完全指南》第 10.2 节:修复混合内容的查找方法与改法清单 | 本站《网站 SSL 证书免费部署完全指南》 | 2026-10-10 |
更新记录
2026-10-13 · v1.0:上线:混合内容定位三法(控制台 / 源码 / curl)、按资源类型的改法顺序、五分钟验证清单、与证书问题的区分表。
本专题全文以 CC BY 4.0 协议开源,可转载、改编,请注明出处:GitHub · iPythoning/ssl-guide-zh
延伸
相关阅读
「不安全」的 6 种原因
地址栏写着「不安全」只有六种原因:纯 HTTP、证书过期、域名不匹配、自签名/不受信任、证书链不完整、混合内容。每一种都给现象、判定方法、修复步骤,并附错误码映射表与修好后的三分钟验收清单。

证书过期 5 分钟应急
红屏、错误码 ERR_CERT_DATE_INVALID 就是证书过期:30 秒确认,再按你所在路线(Certbot / 宝塔 / cPanel / Cloudflare / SaaS / IIS)立即续期,三分钟验证红屏消失,最后排查自动续期为什么失效并补上到期监控。

SSL 错误码速查表
红屏上的错误码就是最快的线索:高频 6 码(过期、不受信任、域名不匹配、吊销、无效、弱算法)一码一行——含义、常见诱因、严重度、去向链接;另附少见证书码、打不开类错误码、Cloudflare 错误页与两条只读取证命令。

交给我们
不想自己动手?
泓森互联提供 SSL 证书终身维护服务:部署、监控、自动续期与失效应急,一次购买长期有效。服务范围与价格以服务页为准;也可以先做免费体检,把情况摸清楚再决定。
留个联系方式,我们帮你看看
不确定自己的网站是什么情况?留下信息,或直接 预约诊断,我们把体检结果和修复路径说清楚。