代码之家  ›  专栏  ›  技术社区  ›  Fionn

HTTP传输编码和请求

  •  3
  • Fionn  · 技术社区  · 16 年前

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

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

    6 回复  |  直到 16 年前
        1
  •  4
  •   ChristopheD    16 年前

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

    也看到 http://argray.com/unixfaq/httpd_error_codes.shtml

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

        2
  •  3
  •   Julian Reschke    16 年前

    我同意这个问题的答案是不明显的,并且已经跟进了 HTTP WG's mailing list .

    更新:bj_¶rn h.正确指出:

    RFC 2616第3.6节:

    接收 带有转移编码的实体实体实体 不明白应该回去 501(未实现),关闭
    连接。

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

        3
  •  1
  •   mP.    12 年前

    主要是个人意见。

    我一直认为5xx错误是实际的编程错误,就像发生了什么事情。如果服务器不理解请求,我会说4xx错误是更好的响应,因为问题在于请求,而不是服务器上失败的进程。我不确定是哪一个4xx,但有一些,所以选择一个应该不难。

        4
  •  0
  •   Ferdinand Beyer    16 年前

    无效的请求 Transfer-Encoding HTTP版本的格式不正确。因此,服务器应该用 400 Bad Request .

        5
  •  0
  •   hmakholm left over Monica    12 年前

    可以说,不理解分块编码应该是 500内部服务器错误 而不是501,因为RFC-2616说服务器必须理解它。

    但是,如果一个服务器选择不接受带有分块体的请求,并且它想为此责怪客户机,那么在法律上这样做的一种方法是 要求411长度 --由于不能同时使用内容长度和传输编码,因此不使用这两种方法发送请求是不现实的。

        6
  •  -1
  •   mjy    16 年前

    RFC有点不清楚,但我觉得应该是 406不可接受 .