1.背景介绍
Google Chrome 浏览器将在 2021 年 1 月的稳定版更新中,默认阻断多种形式的 ”混合内容“下载 (mixed content downloads),即 ”从 HTTPS 站点发出的非 HTTPS 下载“。
其排期计划如下:
其中, Mixed Content 分为以下两类:
-
Active mixed content, 主动式混合内容, 如 JS 脚本、CSS 样式表、 AJAX 请求、a 标签下载资源等 ==> 屏蔽资源
-
Passive mixed content,被动式混合内容, 如背景图片、IMG 标签图片、嵌入式音视频资源等 ==> 尝试升级到 https,如果升级失败,则屏蔽资源
2. 测试结果
2.1 Chrome 87
测试页面: https://s3.stdio.io/
测试平台1:【MacOS + Chrome stable】Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
文件类型 | HTTPS 资源 | HTTP 资源,后端支持 HTTPS | HTTP 资源,后端不支持HTTPS |
---|---|---|---|
img 标签图片 | √ | √ (自动升级到 https 请求) (右击保存图片,未提示警告) |
X |
script 标签 JS 脚本 | √ | X | X |
link 标签 CSS 样式 | √ | X | X |
AJAX 请求(允许跨越) | √ | X | X |
二进制程序下载 | √ | X (无法启动下载) |
X (无法启动下载) |
安卓 APK 下载 | √ | X (无法启动下载) |
X (无法启动下载) |
压缩文件下载 | √ | X (无法启动下载) |
X (无法启动下载) |
PDF 文件下载 | √ (正常下载) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
MP3 文件下载 | √ (正常下载) |
√ (正常下载,未提示警告) |
√ (正常下载,未提示警告) |
图片文件下载 | √ (正常下载) |
√ (正常下载,未提示警告) |
√ (正常下载,未提示警告) |
2.2 Chrome 88, 89
测试页面: https://s3.stdio.io/
测试平台2:【MacOS + Chrome Beta】 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.87 Safari/537.36
测试平台3:【MacOS + Chrome Canary】Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4364.0 Safari/537.36
(Chrome 88 与 89 在以下测试项中表现一致)
文件类型 | HTTPS 资源 | HTTP 资源,后端支持 HTTPS | HTTP 资源,后端不支持HTTPS |
---|---|---|---|
img 标签图片 | √ | √ (自动升级到 https 请求) (右击保存图片,提示警告,按钮默认 Discard) |
X(自动升级到 https 请求失败) (无法右击保存) |
script 标签 JS 脚本 | √ | X | X |
link 标签 CSS 样式 | √ | X | X |
AJAX 请求(允许跨越) | √ | X | X |
二进制程序下载 | √ | X (无法启动下载) |
X (无法启动下载) |
安卓 APK 下载 | √ | X (无法启动下载) |
X (无法启动下载) |
压缩文件下载 | √ | X (无法启动下载) |
X (无法启动下载) |
PDF 文件下载 | √ (正常下载) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
MP3 文件下载 | √ (正常下载) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
图片文件下载 | √ (正常下载) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
X (无法启动下载,a 标签 + 合适的 MIME 会自动跳转页面预览) |
3. 结论与建议
-
备注:
-
1) 2021-01-26 更新: 实测 MacOS Chrome 88 稳定版,混合内容的策略同 87 版本,无变更
-
2) 以上测试所得出的结论,即 “Chrome 88 存在更严格的下载屏蔽策略,Console 提示已屏蔽不安全资源的下载”,这一测试结果存在于部分设备上,符合 Google 公告描述;
另外部分同事使用 Beta 版测试的结论是 “混合内容的下载策略变得更宽松,包括 二进制程序、安卓 APK、压缩文件、文档、MP3 等均可直接下载, Console 提示未来会屏蔽该类资源下载”;
由于此事实与 Google 公告相悖,我们对即将到来的 stable 版本具体表现尚存在疑虑。 由于不安全下载最终肯定会被 chrome 屏蔽,建议是做最坏的准备。 -
3) 相关变更主要围绕 “混合内容下载”,核心是 “下载” 行为,对于其他的页面资源加载过程,暂无重大变更。
-
建议如下:
-
对于被动式混合内容,即页面内嵌的音视频、图片资源等,Chrome 浏览器会自动升级到 HTTPS 请求; 只要保证这些资源可通过 HTTPS 访问,不需要对网站代码进行修改
-
对于主动式混合内容:
-
JS、CSS 等页面资源加载,以及 iframe、AJAX 请求会被浏览器阻断, 需要更新相关网站代码,保证全部为 HTTPS 资源 (Chrome 浏览器在之前版本已经默认屏蔽该类资源加载)
-
不安全的(HTTP)文件下载链接,需要升级为 HTTPS 链接
(通过 a 标签外链或下载的图片、PDF 等可预览资源,如果 MIME 头正确,浏览器可能会自动跳转页面查看,不会启动下载,影响较小,但是仍建议升级为 HTTPS)
-