乐于分享
好东西不私藏

C盘剩4GB就别想下载?Chrome这个隐藏限制,90%的开发者不知道!

C盘剩4GB就别想下载?Chrome这个隐藏限制,90%的开发者不知道!
前言

最近我在项目中踩了一个大坑,花了整整一天排查,最后发现罪魁祸首竟然是——C盘剩余空间不足4GB!截至发稿日期,最新版Chrom依然有这个问题。

这个隐藏在Chrome深处的"安全策略",相信90%的开发者都不知道。今天就把我踩坑经历和解决方案分享给你,建议收藏备用!

一、场景还原
现象
  • ✅ 接口状态码是 200

  • ✅ Network面板显示请求已发出
  • ✅ Timing显示下载持续了300ms+
  • ❌ 但响应数据"无法加载"
  • ❌ 最终抛出 Network Error
触发条件
条件
说明
操作系统
Windows 10 / Windows 11
浏览器
Google Chrome
截至发稿日期,最新版仍有此问题)
C盘剩余
小于4GB
(我C盘容量是102G,可能按照百分比来的)
文件大小
超过10MB
下载方式
Blob文件流下载

💡 小贴士:这个问题与前端代码无关,无论你怎么改axios配置、怎么调整超时时间,都无法解决!

报错贴图

二、问题分析
经过反复测试,我发现这是Chrome的一个隐藏安全机制

当Windows系统C盘剩余空间不足时,Chrome会主动中断超过10MB的数据流接收,以防止磁盘空间耗尽导致系统崩溃。

可能影响范围:

不只是文件下载,任何通过接口返回的大于10MB的数据都可能触发这个限制:

  • 大JSON数据返回
  • 图片/视频流
  • 报表数据导出
  • 批量数据查询
三、解决方案

1、使用文件直链下载代替blob文件流下载。2、如果还是用文件流下载方案,则需要使用分片下载,将每片文件流分割为小于10M的数据。3、改用火狐浏览器,测试火狐浏览器可以正常下载。4、使用谷歌浏览器的无痕模式,无痕模式下可以正常下载。5、通过设置谷歌浏览器的Default软连接到其他盘,解决这个问题。

//通过管理员身份打开cmd//命令前边C盘是谷歌的Default文件地址(每个人不一样),后边是你自己建的其他盘软连接地址。//执行命令前:# 1、你应该先在其他盘创建一个文件夹,即软链接指向的地址;# 2、将原谷歌Default文件夹改名字,如Default.bak以做备份。# 3、在命令执行成功后,再考虑是否删除备份文件,以及将原谷歌Default文件中的所有文件复制到步骤1中你创建的文件夹Mklink /d "C:\Users\10713\AppData\Local\Google\Chrome\User Data\Default" "D:\Chrome\Default"
四、demo源码地址

https://gitee.com/benxiaohai1071/frontend-ai-demo/tree/master/demo/download

源码中readme.md文件有操作说明!
Vue 3.5新特性,总有一个特性你会用得上!Vue3 动态组件实战:一个弹窗搞定 N 种业务场景0.1+0.2≠0.3?Vue3 高精度计算方案,告别 JS 浮点陷阱