RFC 9110 定义了
Content-Length
ABNF 规则,如下所示:
Content-Length = 1*DIGIT
(即 1 个或多个 ASCII 数字)
同样也这么说:
发送方不得转发内容长度标头字段值与上述 ABNF 不匹配的消息,但有一个例外:内容长度标头字段值由以逗号分隔重复的相同十进制值组成的接收方列表(例如,“Content-Length:42, 42”)可以拒绝消息无效,或者用十进制值的单个实例替换该无效字段值,因为这可能表明上游生成或组合了重复项消息处理器。
因此,如果代理收到以下请求,则不应在
Content-Length
标头不变的情况下转发该请求:
GET / HTTP/1.1\r\n
Host: whatever\r\n
Content-Length: \r\n
\r\n
端点服务器应该如何处理这样的请求?是否应该被拒绝?如果应该接受,那么应该如何解释?
我就这个问题对 HTTP 生态系统进行了广泛的调查,实现似乎各不相同。我有兴趣听取接受/拒绝分歧双方的意见。