HTTP 1.1 TE 标头

Posted

技术标签:

【中文标题】HTTP 1.1 TE 标头【英文标题】:HTTP 1.1 TE header 【发布时间】:2014-06-10 06:28:30 【问题描述】:

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

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

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

【问题讨论】:

请阅读 RFC 7230 和 7231,看看他们是否回答了这些问题。 这是 RFC2616 的重新散列版本还是 RFC 中规定的任何新标准。 @VamsiMohan 723* 是 2616 的修订和更新版本,旨在阐明规范。称它们为“重制版”对于在这个项目中投入大量工作的人来说是一种冒犯,因为新规范是一个巨大的改进。 对不起.. 我并没有冒犯的意思,但在我继续阅读它之前,我想先了解一下这个 RFC。再次道歉!! 【参考方案1】:

在RFC 7230 中说,

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

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

【讨论】:

以上是关于HTTP 1.1 TE 标头的主要内容,如果未能解决你的问题,请参考以下文章

Jetty 在格式错误的 HTTP POST 标头上返回“HTTP/1.1 400 Bad Request”。这是预期的吗?

HTTP/1.1 401 在 GET 请求的负载运行器的响应标头中未经授权

一旦通过身份验证,HTTP 1.1 授权标头就会随每个请求一起发送到域内的每个资源

多个 HTTP 授权标头?

Http-Server 如何创建请求标头和响应标头

解析 HTTP 标头字段值的每个部分