Spring Boot部署远程Windows VM时Accept-Ranges为none无法断点续传
可能的故障原因及排查方案
1. 链路中间存在反向代理/应用服务网关修改响应头
- 这是概率最高的原因:如果远程虚拟机上的Spring Boot应用前部署了IIS、Nginx、Apache、API网关等反向代理组件,大部分代理默认开启响应缓冲功能时,会自动禁用范围请求支持,主动将后端返回的
Accept-Ranges: bytes覆盖为Accept-Ranges: none。 - 部分代理的默认规则会直接丢弃范围请求相关的请求头、响应头,导致断点续传能力失效。
2. 虚拟机内部安全防护/防火墙规则修改了响应头
- 远程Windows虚拟机如果开启了系统自带的防火墙、第三方杀毒软件、WAF防护组件,部分安全规则会出于防攻击的目的,主动修改响应头,禁用范围请求功能。
3. 远程Spring Boot运行环境与本地存在配置差异
- 排查远程启动的应用是否加载了和本地不一致的配置:比如自定义的过滤器、拦截器中存在覆盖
Accept-Ranges响应头的逻辑,或者修改了内嵌Tomcat的默认配置,关闭了静态资源的范围请求支持。 - 检查远程部署的jar/war包是否完整:是否存在打包过程中遗漏了资源处理相关的配置文件,导致Spring Boot的资源处理器无法支持范围请求。
- 确认远程应用读取目标资源的权限:如果应用没有资源的随机读取权限,也会导致无法支持范围请求,返回
Accept-Ranges: none。
快速排查步骤
- 直接登录远程Windows虚拟机,本地执行
curl -I http://localhost:8080验证响应头:- 如果返回
Accept-Ranges: bytes,说明问题出在虚拟机外部的链路,重点排查外部的反向代理、防火墙、WAF配置 - 如果返回
Accept-Ranges: none,说明问题出在虚拟机内部的应用或系统配置,重点排查应用配置、系统安全规则
- 如果返回
内容的提问来源于stack exchange,提问作者Nikhil Lakare
相关产品推荐
相关产品推荐

