是否可以为请求启用http压缩?

我看到很多关于为服务器响应启用http压缩的信息,但是对于传入的请求呢? 浏览器在发送到服务器之前压缩大型表单文章是不合理的?

另一个例子是我们使用的REST Web服务。 我们必须用大XML文件(10+ MB)发送频繁的PUT请求,并且肯定会在双方中看到一些带宽/速度的好处。

那么这是服务器端解决的问题,还是每个Web应用程序都必须单独处理?

    要将数据压缩到压缩的服务器,您必须压缩请求主体并设置Content-Encoding: gzip头。 标题本身必须是未压缩的。 它logging在mod_deflate中 :

    mod_deflate模块还提供了一个用于解压缩gzip压缩请求主体的filter。 为了激活此function,您必须使用SetInputFilter或AddInputFilter将DEFLATEfilter插入到inputfilter链中。

    现在如果一个请求包含一个Content-Encoding:gzip头部,主体将被自动解压缩。 很less有浏览器有能力gzip请求身体。 但是,一些特殊的应用程序实际上支持请求压缩,例如一些WebDAV客户端。

    一篇描述它的文章在这里 :

    你是怎么做到的? 这里是从mod_deflate源代码再次blurb:只对主要请求/无子请求。 这意味着如果我们select使用这个请求的话,请求的整个部分必须是gzip压缩的,不可能只压缩包含文件的部分,例如在多部分请求中。

    另外,浏览器可以通过设置Accept-Encoding标头来请求压缩服务器响应内容,如下所示:

     GET /index.html HTTP/1.1 Host: www.http-compression.com Accept-Encoding: gzip User-Agent: Firefox/1.0 

    这会将压缩数据返回给浏览器。

    回答关于压缩请求的部分,而不是回应:是的,即使它看起来并不普遍,也是可能的。 客户端应用程序需要设置适当的内容编码标题。 至于服务器端的应用程序,有两个select:

    1. 该应用程序支持自己重新填充请求正文。 一个可以做到这一点的示例库是phpxmlrpc。

    2. Web服务器在将响应主体传递给应用程序之前将其膨胀。 这可以使用Apache的mod_deflatefilter并设置一个inputFilter

    这不允许。 根据HTTP规范(RFC 2616),内容编码不是可能的请求头字段之一,因此不可能压缩请求实体主体,因为没有合法的方法让服务器知道发生了这种情况。 请求主体的任何压缩仅作为非标准扩展来完成。

    从我所知道的任何浏览器本身不是,你必须find一个插件,为你做。 您基本上必须设置内容编码HTTP标头,让服务器知道请求是如何进来的。服务器当然需要能够处理该编码。