HTTP 规范规定请求允许使用 Transfer-Encoding 标头 - 但如果服务器不理解给定的 Transfer-Encoding,它应该响应什么错误代码。

据我所知,HTTP 标准没有涵盖这种可能性,但也许我只是忽略了它。

有帮助吗?

解决方案

未知的传输编码应引发 HTTP 错误 501“未实现”。至少 Apache 就是这么做的。

另请参阅 http://argray.com/unixfaq/httpd_error_codes.shtml

编辑: 指向相应 RFC 部分的指针: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2

其他提示

我同意这个问题的答案并不明显,并且已经跟进了 HTTP WG 的邮件列表.

更新:比约恩·H.正确地指出:

RFC 2616 第 3.6 节:

接收带有传输编码实体体体的服务器,它不理解应该返回501(未完成),然后关闭
联系。

所以它确实已经解决了这个问题。

晴个人意见。

我一直以为5xx的错误是实际的编程错误,喜欢的东西跌倒了。如果服务器犯规明白请求我要说一个4xx错误是一个更好的响应,问题与要求不那么失败的进程的服务器上。林不知道哪个4XX但有几个这样选择一个不应该很难。

与用于HTTP版本无效Transfer-Encoding的请求格式错误。因此,服务器应与400 Bad Request响应。

可以说没有理解分块编码应该是一个的 500内部服务器错误而不是501,因为RFC-2616表示,服务器必须理解这一点。

但是,如果一个服务器选择不接受分块体的请求,并且它要责怪客户对于这一点,一个办法这样做在法律上是 411需要长度 - 因为一根绝不能使用内容长度和传输编码在同一时间,这是不实际的发送请求没有任何反正。

RFC是有点不清楚,但恕我直言,它应该是 406不可接受的.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top