当前位置: 首页 > news >正文

把“Mixed Content”吃干抹净——一次 https→http 踩坑实录

本篇所有报错截图均来自本人 2025-06-18 测试日志。


一、案发经过:WPS 中台接进来了,页面却空白

  1. 背景

    • 业务系统:https://10.99.212.22:8600/oa
    • WPS 中台(WebOffice):http://10.99.212.23:8080/weboffice/…
  2. 现象
    点击「在线预览」→ 浏览器控制台瞬间爆红:

    Mixed Content: The page at 'https://10.99.212.22:8600/oa/wpsOnline?...'
    was loaded over HTTPS, but requested an insecure frame 'http://10.99.212.23/...'.
    This request has been blocked.
    

    iframe 区域空白,用户以为“中台崩了”,实则浏览器把请求直接扼杀。


二、为什么拦我?——Mixed Content 安全策略速览

父页协议子资源协议浏览器默认行为
httpshttps✅ 通过
httpshttp❌ 主动内容(iframe/script/XHR)一律 block
httphttps✅ 通过(降级安全,但不拦)
httphttp✅ 通过

结论:https 页面里再嵌 http,就是 Mixed Content,现代浏览器默认阻断


三、实测复现:一分钟把坑踩穿

  1. 最小可复现代码
    <!DOCTYPE html>
    <head><meta charset="utf-8"><title>https→http 踩坑</title></head>
    <body><h3>下面嵌了 WPS 中台(http)</h3><iframe src="http://10.99.212.23/weboffice/office/f/xxx?readonly"width="100%" height="600"></iframe>
    </body>
    </html>
    
  2. 用 https 打开 → F12 立刻出现本文开头报错;iframe 区域空白。
  3. 把 iframe 的 src 改成 https://10.99.212.23/... → 页面秒出,控制台干净。

四、根因剖析——“内网就不用 https”是伪命题

  1. 浏览器只看协议头,不管公网/内网;http:// 就是明文传输。
  2. 内网同样能被 ARP 劫持、中间人插脚本;https 是最低成本的安全基线。
  3. 自签证书即可满足 Mixed Content 规则,不必花钱买公网 SSL

五、三种解法(按推荐顺序)

  1. 全站 HTTPS(一劳永逸)
    给 WPS 中台加一层反向代理(Nginx/Traefik),监听 443,证书用 Let’s Encrypt 或自签,业务代码里把 iframe 地址统一换成 https://10.99.212.23/... → Mixed Content 消失。

  2. Upgrade-Insecure-Requests(30 秒应急)
    在 https 页面加:

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    

    浏览器会自动把 http:// 升级成 https://前提是中台已开 443 并配好证书;否则升级失败照样 404。
    👉 适合“证书已部署,只是地址忘改”的场景。

  3. 降级父页(不推荐)
    把整个 OA 系统跳回 http://,Mixed Content 规则不会触发,但失去加密、浏览器地址栏显示“不安全”,且后续 HTTP→HTTPS 迁移更麻烦。


六、踩坑小结(一句话记忆)

https 父页一旦嵌 http,浏览器直接 block;
要么给中台加证书,要么全站退回 http——前者是正道,后者是坑道。

把 Mixed Content 理解为“浏览器的安全门”,全站 HTTPS 才是钥匙。

http://www.dtcms.com/a/469659.html

相关文章:

  • 中山大学联合项目 论文解读 | iManip:面向机器人操作的技能增量学习
  • Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
  • 第八章 惊喜15 小萍收获初会
  • RabbitMQ基础知识与Spring Boot 3.x集成案例
  • 租房网站建设多少钱网站域名怎么改
  • Redis CPU高负载案例分析
  • ARMv9 CCA机密计算架构演进技术解析:重塑云原生时代的数据安全基石
  • 湖州网站设计浙北数据最新发布的手机有哪些
  • AD加域账号权限设置
  • 解决idea报错:Error running TrustApexCrmApplication. Command line is too long
  • 网站开发淄博进口商品代理平台
  • systme V共享内存(version1)
  • 万网网站制作wordpress投稿管理系统
  • python(47) : 快速截图[Windows工具(2)]
  • VSCODE GDB调试
  • 江西企业网站定制wordpress网页效果
  • CCF-GESP 等级考试 2024年6月认证C++三级真题解析
  • 前端学习1(学习时间:30分钟简单)
  • vlan范围
  • 北京顺义做网站编程正规学校有哪几所
  • 跨平台向量库:Linux Windows 上一条龙部署 PostgreSQL 向量扩展
  • 基于YOLO与DeepSort的高效行人跟踪算法研究
  • [GazeTracking] 视线追踪核心逻辑 | Dlib库
  • docker安装Xinference
  • 从标准化到个性化:基于代理模式的智能办公工具技术实现与趋势
  • AI(学习笔记第十一课) 使用langchain的multimodality
  • 如何配置iis网站国企500强完整名单
  • ppt做的最好的网站有哪些品牌建设方案和思路
  • [cpprestsdk] http_client_config | GET | request()
  • HQChart使用教程30-K线图如何对接第3方数据46-DRAWTEXT_FIX数据结构