HTTPS 混合内容排查实战:从控制台报错到全站 Mixed Content 修复

小锁图标消失了,访问量跟着掉了

给站点上了 HTTPS 之后,很多站长会觉得「安全这块搞定了」,直到某天发现浏览器地址栏的小锁图标变成了「不安全」的感叹号,或者干脆带上一行红色警告。更麻烦的是,有些页面在 Chrome 里完全正常,在 Safari 或手机端却出现图片不显示、样式错乱、按钮点了没反应的情况。打开控制台,满屏都是这样的报错:

Mixed Content: The page at 'https://www.example.com/' was loaded over HTTPS,
but requested an insecure image 'http://cdn.example.com/banner.png'.
This request has been blocked. The content must be served over HTTPS.

Mixed Content: The page at 'https://www.example.com/' was loaded over HTTPS,
but requested an insecure stylesheet 'http://example.com/css/main.css'.
This request has been blocked.

这就是 HTTPS 混合内容(Mixed Content)问题:页面本身通过 HTTPS 加载,但页面内部又引用了通过 HTTP 加载的资源。浏览器对这种「一半加密一半明文」的状态非常警惕,因为明文加载的资源可以被中间人篡改,一旦被注入恶意脚本,整个 HTTPS 的安全性就形同虚设——攻击者不需要破解 TLS,直接改你那个 HTTP 资源就行了。

这篇文章讲清楚浏览器对混合内容的分级处理策略、怎么一次性把全站的 HTTP 引用找出来、在 Nginx 层如何强制修正,以及几个容易被忽略的隐蔽来源。

浏览器其实是分两级处理的

不是所有混合内容都会被浏览器一刀切拦死。主流浏览器把它分成两类,处理力度不同,理解这个区别对排查很关键。

被动混合内容(Passive / Display Mixed Content):图片、视频、音频、字体这类不会主动执行代码的资源。浏览器默认允许加载,但会在地址栏降级显示安全标识——锁图标变成带感叹号的样式,或者显示「不安全」。这就是为什么有些站点的图片明明能显示,安全标识却没了。用户看到锁消失,信任度立刻下降,对转化率的影响非常直接。

主动混合内容(Active Mixed Content):脚本(

Last modification:September 15th, 2026 at 12:24 pm

Leave a Comment

© 2026 Copyright