1

我正在开发一个手动解析Range: ...字段的项目。出现错误时,它总是返回 416 HTTP 错误(Range Not Satisfiable)。

在我看来,在大多数情况下,比如范围不存在bytes=...或数字无效,HTTP 错误应该改为 400。

你以前有过这个具体案例的经验吗?我们期望返回什么?

4

1 回答 1

1

冒着类似意见的答案的风险:RFC 7233 在无法满足范围请求的上下文中讨论 416,强烈暗示该请求在语法上是正确的。

416(Range Not Satisfiable)状态码表示请求的 Range 标头字段(第 3.1 节)中没有一个范围与所选资源的当前范围重叠,或者请求的范围集由于无效范围或过多而被拒绝小范围或重叠范围的请求。

https://www.rfc-editor.org/rfc/rfc7233#page-15

请求语法错误或其他格式错误仍然对应于一般的 400 Bad Request。

400 (Bad Request) 状态码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由)。

https://www.rfc-editor.org/rfc/rfc7231#page-58

因此,如果请求未指定有效bytes范围(当前唯一注册的范围类型),我将返回 400。

于 2019-09-24T02:33:21.387 回答