目前的情况是什么呢? Transfer-Encoding: gzip 或者一个 Content-Encoding: gzip 当我想让有限的带宽的客户 表示愿意接受压缩的响应时 , 服务器最终决定是否压缩 。 后者是什么,如Apache的mod_deflate和IIS做的,如果你让它照顾压缩。 根据要压缩内容的大小,它将执行额外的Transfer-Encoding: chunked 。 它还将包括一个Vary: Accept-Encoding ,这已经暗示了这个问题。 Content-Encoding似乎是实体的一部分,所以改变Content-Encoding等于实体的变化,即不同的Accept-Encoding头意味着例如caching不能使用其它相同实体的caching版本。 有没有一个明确的答案,我已经错过了(这不是在一个apache新闻组的长线程中消息内)? 我目前的印象是: 实际上,Transfer-Encoding是通过现有的服务器和客户端实现进行Content-Encoding的主要方式 内容编码由于其语义含义而带有一些问题(当透明地压缩响应时,服务器应该如何处理ETag )? 原因是chicken'n'egg:浏览器不支持它,因为服务器不是因为浏览器不支持 所以我假设正确的方式将是一个Transfer-Encoding: gzip (或者,如果我额外的块体,它将成为 Transfer-Encoding: gzip, chunked )。 在这种情况下没有任何理由碰Vary或ETag或任何其他头,因为它是一个运输级别的东西。 目前我并不太在意Transfer-Encoding的“逐跳”特性,这是别人似乎首先关心的,因为代理可能会解压缩并将未压缩的内容转发给客户端。 然而,如果原始请求具有正确的Accept-Encoding头,那么代理可能就像原来那样(压缩),在我知道的所有浏览器都是给定的情况下。 顺便说一句,这个问题至less有十年历史,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=68517 。 任何澄清这一点将不胜感激。 无论是在什么被认为是符合标准的和什么被认为是实际的。 例如,仅支持透明“内容编码”的HTTP客户端库将成为违背实用性的论点。
我通过Apache提供的所有内容与Content-Encoding: zip但即时压缩。 我的内容很多是磁盘上的静态文件。 我想事先gzip文件,而不是每次请求时压缩它们。 我相信这是mod_gzip在Apache 1.x中自动执行的,只是在它旁边有.gz文件。 mod_deflate不再是这种情况。
我有一个HTTP通信到Web服务器请求JSON数据。 我想用Content-Encoding: gzip压缩这个数据stream。 有没有一种方法可以设置Accept-Encoding: gzip在我的HttpClient中? Android引用中的gzipsearch不会显示与HTTP相关的任何内容,如您在此处所看到的。