HTTP Accept-Encoding和发送未编码的数据

时间:2011-07-14 02:39:13

标签: encoding http-headers

我构建了一个用于压缩HTTP输出的模块。阅读spec,我没有找到一些明确的区别:

Accept-Encoding:

这应该与Accept-Encoding: *相同还是没有标题?

或者,如果我不支持gzip,但我得到这样的标题:

Accept-Encoding: gzip

我应该返回406错误还是只返回未编码的数据?

编辑:

我已经阅读了几次规范。它提到了我的第一个案例,但没有定义服务器的行为应该是什么。

我是否应该将此案件视为标头不存在?或者我应该返回406错误,因为在给定字段值(''不是有效编码)的情况下无法对某些内容进行编码。

1 个答案:

答案 0 :(得分:7)

Spec: 14.3 Accept-Encoding

中写有所有内容
  

Accept-Encoding字段中的特殊“*”符号与any匹配            标题中未明确列出的可用内容编码            字段。

     

如果请求中存在Accept-Encoding字段,并且服务器无法根据Accept-Encoding标头发送可接受的响应,则服务器应该发送具有406(Not Acceptable)状态的错误响应码。

编辑:

  

如果Accept-Encoding字段值为空,则只有“身份”            编码是可以接受的

     

在这种情况下,如果“identity”是可用内容编码之一,那么服务器应该使用“身份”内容编码,除非它具有不同内容编码对客户端有意义的附加信息。

What is "identity"

  

<强>身份
      默认(标识)编码;没有任何转变的使用。此内容编码仅在Accept-Encoding标头中使用,并且不应在Content-Encoding标头中使用。