Answers:
要将PUT
数据压缩到服务器,您必须压缩请求正文并设置Content-Encoding: gzip
标头。标头本身必须未压缩。它记录在mod_deflate中:
mod_deflate模块还提供了用于解压缩gzip压缩请求主体的过滤器。为了激活此功能,您必须使用SetInputFilter或AddInputFilter将DEFLATE过滤器插入到输入过滤器链中。
...
现在,如果请求包含Content-Encoding:gzip标头,则正文将自动解压缩。很少有浏览器能够gzip请求正文。但是,某些特殊应用程序实际上确实支持请求压缩,例如某些WebDAV客户端。
描述它的文章在这里:
你是怎么做到的?这也是来自mod_deflate源代码的内容:仅适用于主请求/无子请求。这意味着,如果我们选择使用此请求,则必须对请求的整体进行gzip压缩,例如,在多部分请求中,不可能仅压缩包含文件的部分。
另外,浏览器可以请求服务器响应的内容,以通过设置被压缩Accept-Encoding
报头按这里:
GET /index.html HTTP/1.1
Host: www.http-compression.com
Accept-Encoding: gzip
User-Agent: Firefox/1.0
这会将压缩的数据返回到浏览器。
Accept-Encoding
告诉服务器客户端支持什么压缩。标头Content-Encoding
描述了身体的压缩。
这是不允许的。根据HTTP规范(RFC 2616),Content-Encoding
它不是可能的请求标头字段之一,因此无法压缩请求实体主体,因为没有合法的方法可以让服务器知道发生了这种情况。请求正文的任何压缩都只能作为非标准扩展来完成。
If the content-coding of an entity in a request message is not acceptable to the origin server, the server SHOULD respond with a status code of 415 (Unsupported Media Type).
由Request and Response messages MAY transfer an entity if not otherwise restricted by the request method
Content-Encoding
entity-header
you must compress the whole request, inclusive of header
。但是,不得压缩http标头。http正文是唯一需要压缩的内容(如您正确引用的文章所述,完整内容)。