diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/http/headers/accept-encoding | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/http/headers/accept-encoding')
-rw-r--r-- | files/zh-cn/web/http/headers/accept-encoding/index.html | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/files/zh-cn/web/http/headers/accept-encoding/index.html b/files/zh-cn/web/http/headers/accept-encoding/index.html new file mode 100644 index 0000000000..f2379df8d1 --- /dev/null +++ b/files/zh-cn/web/http/headers/accept-encoding/index.html @@ -0,0 +1,117 @@ +--- +title: Accept-Encoding +slug: Web/HTTP/Headers/Accept-Encoding +tags: + - Accept-Encoding + - 内容协商 + - 请求头 +translation_of: Web/HTTP/Headers/Accept-Encoding +--- +<div>{{HTTPSidebar}}</div> + +<p>HTTP 请求头 <strong>Accept-Encoding </strong>会将客户端能够理解的内容编码方式——通常是某种压缩算法——进行通知(给服务端)。通过内容协商的方式,服务端会选择一个客户端提议的方式,使用并在响应头 {{HTTPHeader("Content-Encoding")}} 中通知客户端该选择。</p> + +<p>即使客户端和服务器都支持相同的压缩算法,在 identity 指令可以被接受的情况下,服务器也可以选择对响应主体不进行压缩。导致这种情况出现的两种常见的情形是:</p> + +<ul> + <li>要发送的数据已经经过压缩,再次进行压缩不会导致被传输的数据量更小。一些图像格式的文件会存在这种情况;</li> + <li><span>服务器超载,无法承受压缩需求导致的计算开销。通常,如果服务器使用超过80%的计算能力,微软建议不要压缩。</span></li> +</ul> + +<p>只要 identity —— 表示不需要进行任何编码——没有被明确禁止使用(通过 identity;q=0 指令或是 *;q=0 而没有为 identity 明确指定权重值),则服务器禁止返回表示客户端错误的 {{HTTPStatus("406")}} Not Acceptable 响应。</p> + +<div class="note"><strong>注意:</strong> + +<ul> + <li> + <p>IANA 维护了<a class="external" href="http://www.iana.org/assignments/http-parameters/http-parameters.xml#http-parameters-1">一个完整的官方支持的编码方式列表</a>。</p> + </li> + <li>另外两种编码方式—— bzip 和 bzip2 ——有时候也会用到,尽管并未在标准中出现。这两种方式实现了 UNIX 系统上的同名程序所采用的算法。注意第一种由于专利许可问题已经停止维护。</li> +</ul> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="语法">语法</h2> + +<pre class="syntaxbox">Accept-Encoding: gzip +Accept-Encoding: compress +Accept-Encoding: deflate +Accept-Encoding: br +Accept-Encoding: identity +Accept-Encoding: * + +// Multiple algorithms, weighted with the {{Glossary("Quality Values", "quality value")}} syntax: +Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5</pre> + +<h2 id="指令">指令</h2> + +<dl> + <dt><code>gzip</code></dt> + <dd>表示采用 <a class="external external-icon" href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">Lempel-Ziv coding</a> (LZ77) 压缩算法,以及32位CRC校验的编码方式。</dd> + <dt><code>compress</code></dt> + <dd>采用 <a class="external external-icon" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW) 压缩算法。</dd> + <dt><code>deflate</code></dt> + <dd>采用 <a href="http://en.wikipedia.org/wiki/Zlib">zlib</a> 结构和 <a href="http://en.wikipedia.org/wiki/DEFLATE"><em>deflate</em></a> 压缩算法。</dd> + <dt><code>br</code></dt> + <dd>表示采用 <a href="https://en.wikipedia.org/wiki/Brotli">Brotli</a> 算法的编码方式。</dd> + <dt><code>identity</code></dt> + <dd>用于指代自身(例如:未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。</dd> + <dt><code>*</code></dt> + <dd>匹配其他任意未在该请求头字段中列出的编码方式。假如该请求头字段不存在的话,这个值是默认值。它并不代表任意算法都支持,而仅仅表示算法之间无优先次序。</dd> + <dt><code>;q=</code> (qvalues weighting)</dt> + <dd>值代表优先顺序,用相对<a href="/en-US/docs/Glossary/Quality_values">质量价值</a> 表示,又称为权重。</dd> +</dl> + +<h2 id="示例">示例</h2> + +<pre>Accept-Encoding: gzip + +Accept-Encoding: gzip, compress, br + +Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1 +</pre> + +<h2 id="规范">规范</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "Accept-Encoding", "5.3.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td> + </tr> + </tbody> +</table> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("http.headers.Accept-Encoding")}}</p> + +<h2 id="相关内容">相关内容</h2> + +<ul> + <li>HTTP <a href="/en-US/docs/Web/HTTP/Content_negotiation">内容协商</a></li> + <li>包含有内容协商结果的响应头: {{HTTPHeader("Content-Encoding")}}</li> + <li>其他相似的请求头:{{HTTPHeader("TE")}}, {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept-Language")}}</li> +</ul> + +<div id="icibaCirclePointer" style="position: absolute; top: 233px; left: 15px;"></div> + +<div id="icibaCirclePointer" style="position: absolute; top: 233px; left: 15px;"></div> |