HTTP传输编码和请求

时间:2009-03-28 15:07:22

标签: http http-headers transfer-encoding

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

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

6 个答案:

答案 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不可接受