HTTP规范声明允许Transfer-Encoding标头用于请求 - 但是如果服务器不理解给定的Transfer-Encoding,则应该响应什么错误代码。
据我所知,HTTP标准没有涵盖这种可能性,但也许我只是忽略了它。
答案 0 :(得分:4)
未知的传输编码应该引发HTTP错误501“NOT IMPLEMENTED”。 这就是Apache的作用,至少。
另见http://argray.com/unixfaq/httpd_error_codes.shtml
编辑指向相应RFC部分的指针:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2
答案 1 :(得分:3)
我同意这个问题的答案是不明显的,并已跟进HTTP WG's mailing list。
更新:BjörnH。理所当然地指出:
RFC 2616的第3.6节:
接收服务器的服务器 实体 - 身体与转移编码它 不明白应该回来 501(未实现),并关闭
连接。所以它确实解决了这个问题。
答案 2 :(得分:1)
主要是个人意见。
我一直认为5xx错误是实际的编程错误,就像有些东西掉了。如果服务器不理解请求我会说4xx错误是一个更好的响应,因为问题是请求不是服务器上的失败进程。我不确定哪个4xx但是有一些选择一个应该不难。
答案 3 :(得分:0)
HTTP版本的Transfer-Encoding
无效请求格式不正确。因此,服务器应以400 Bad Request
回复。
答案 4 :(得分:0)
可能无法理解分块编码应该是 500内部服务器错误而不是501,因为RFC-2616说服务器必须理解它。
但是,如果服务器选择不接受带有分块主体的请求,并且它想要责备客户端,那么合法地执行此操作的一种方法是 411 Length Required - 因为必须不要同时使用Content-Length和Transfer-Encoding,无论如何都不能发送请求。
答案 5 :(得分:-1)
RFC有点不清楚,但恕我直言,它应该 406不可接受。