You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求超出文件长度返回416错误,是否符合HTTP规范?

疑问:请求超出文件长度的Byte-Range返回416错误,是否符合RFC规范?

我发起Range: bytes=0-65536的HTTP请求时,收到了416 Range Not Satisfiable错误,但目标文件实际只有3356字节。

查RFC9110的Byte-Range规范,里面明确:客户端可以在不知道文件大小的情况下限制请求字节数;如果范围的结束值缺失,或者结束值大于等于文件当前长度,这个字节范围应该被解释为文件的剩余部分——也就是服务器要把结束值替换成文件长度减一。按这个规则,我应该能拿到整个文件才对,但实际却报错了。

现在的情况是只有当请求的Byte-Range不超过文件长度时才能成功,但我需要客户端不用提前知道文件大小(文件大小差异很大)。请求的是cloud-optimized-geotiff文件,由Vite开发服务器提供,通过OpenLayers和geotiff.js发起请求。

以下是DevTools里的请求和响应详情:

General信息

Request URL: http://localhost:3000/scenarios/1/1_parcel_fill.tif
Request Method: GET
Status Code: 416 Range Not Satisfiable
Remote Address: [::1]:3000
Referrer Policy: strict-origin-when-cross-origin

响应头

Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 0
Content-Range: bytes */3356
Date: Wed, 21 Sep 2022 21:38:19 GMT
Keep-Alive: timeout=5

请求头

Accept: */*
Accept-Encoding: identity
Accept-Language: en-US,en;q=0.9
Cache-Control: no-cache
Connection: keep-alive
Host: localhost:3000
Pragma: no-cache
Range: bytes=0-65536
Referer: http://localhost:3000/
sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

到底是我误解了规范,还是这个请求确实无法被满足?

内容的提问来源于stack exchange,提问作者davemfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:20:56