2

在阅读 RFC2616 时,我遇到了用于分块编码的 TE 和 Transfer Encoding 标头。我对这些有以下问题:

  1. 如果 HTTP 服务器因为 TE 标头的存在而拒绝请求,它是否符合 RFC?
  2. 如果 HTTP 客户端发送带有 TE 标头和 t-codings 和 q 值列表的请求,并且一旦此类 q 值为 1,HTTP 服务器是否必须发送具有该编码的响应数据,例如:TE: deflate;q =0.5 gzip;q=1(这是否要求服务器在 gzip 中压缩实体数据并发送它,或者服务器可以忽略它并以正常方式发送数据?)。
  3. 如果 HTTP 服务器不支持接收分块数据(我知道它违反 RFC,但这是有意的),那么正确的错误响应代码可能是发送回客户端以便客户端下次不发送 PUT以分块方式请求。

提前感谢您的宝贵意见和回答。

4

1 回答 1

2

RFC 7230中它说,

请求中的“TE”标头字段指示
客户端在响应中除了分块之外还愿意接受哪些传输编码,以及客户端是否愿意接受 分块传输编码
中的尾部字段。

这推断 TE 只是客户端的声明,可以被下一个服务器忽略。HTTP 服务器应该没有理由拒绝带有 TE 标头的请求。如果服务器不支持分块,则它不支持 HTTP 1.1,因此应该将传入请求解释为好像它是 1.0 请求并相应地响应。见这里

于 2014-08-20T14:33:49.777 回答