aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/http/headers/transfer-encoding
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/http/headers/transfer-encoding
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/http/headers/transfer-encoding')
-rw-r--r--files/zh-cn/web/http/headers/transfer-encoding/index.html106
1 files changed, 106 insertions, 0 deletions
diff --git a/files/zh-cn/web/http/headers/transfer-encoding/index.html b/files/zh-cn/web/http/headers/transfer-encoding/index.html
new file mode 100644
index 0000000000..b00b809cf2
--- /dev/null
+++ b/files/zh-cn/web/http/headers/transfer-encoding/index.html
@@ -0,0 +1,106 @@
+---
+title: Transfer-Encoding
+slug: Web/HTTP/Headers/Transfer-Encoding
+tags:
+ - 首部
+translation_of: Web/HTTP/Headers/Transfer-Encoding
+---
+<div>{{HTTPSidebar}}</div>
+
+<p><strong><code>Transfer-Encoding</code></strong> 消息首部指明了将 {{Glossary("Entity header","entity")}} 安全传递给用户所采用的编码形式。</p>
+
+<p><code>Transfer-Encoding</code> 是一个<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#hbh">逐跳传输消息首部</a>,即仅应用于两个节点之间的消息传递,而不是所请求的资源本身。一个多节点连接中的每一段都可以应用不同的<code>Transfer-Encoding</code> 值。如果你想要将压缩后的数据应用于整个连接,那么请使用端到端传输消息首部  {{HTTPHeader("Content-Encoding")}} 。</p>
+
+<p>当这个消息首部出现在 {{HTTPMethod("HEAD")}} 请求的响应中,而这样的响应没有消息体,那么它其实指的是应用在相应的  {{HTTPMethod("GET")}} 请求的应答的值。</p>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th scope="row">Header type</th>
+ <td>{{Glossary("Response header")}}</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Forbidden header name")}}</th>
+ <td>yes</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox">Transfer-Encoding: chunked
+Transfer-Encoding: compress
+Transfer-Encoding: deflate
+Transfer-Encoding: gzip
+Transfer-Encoding: identity
+
+<em>// Several values can be listed, separated by a comma</em>
+Transfer-Encoding: gzip, chunked</pre>
+
+<h2 id="指令">指令</h2>
+
+<dl>
+ <dt><code>chunked</code></dt>
+ <dd>数据以一系列分块的形式进行发送。 {{HTTPHeader("Content-Length")}} 首部在这种情况下不被发送。。在每一个分块的开头需要添加当前分块的长度,以十六进制的形式表示,后面紧跟着 '<code>\r\n</code>' ,之后是分块本身,后面也是'<code>\r\n</code>' 。终止块是一个常规的分块,不同之处在于其长度为0。终止块后面是一个挂载(trailer),由一系列(或者为空)的实体消息首部构成。</dd>
+ <dt><code>compress</code></dt>
+ <dd>采用 <a class="external" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW) 压缩算法。这个名称来自UNIX系统的 <em>compress</em> 程序,该程序实现了前述算法。<br>
+ 与其同名程序已经在大部分UNIX发行版中消失一样,这种内容编码方式已经被大部分浏览器弃用,部分因为专利问题(这项专利在2003年到期)。</dd>
+ <dt><code>deflate</code></dt>
+ <dd>采用 <a class="external" href="http://en.wikipedia.org/wiki/Zlib">zlib</a> 结构 (在 <a class="external" href="http://tools.ietf.org/html/rfc1950">RFC 1950</a> 中规定),和 <a class="external" href="http://en.wikipedia.org/wiki/DEFLATE"><em>deflate</em></a> 压缩算法(在 <a class="external" href="http://tools.ietf.org/html/rfc1952">RFC 1951</a> 中规定)。</dd>
+ <dt><code>gzip</code></dt>
+ <dd>表示采用  <a href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">Lempel-Ziv coding</a> (LZ77) 压缩算法,以及32位CRC校验的编码方式。这个编码方式最初由 UNIX 平台上的 <em>gzip</em> 程序采用。处于兼容性的考虑, HTTP/1.1 标准提议支持这种编码方式的服务器应该识别作为别名的 <code>x-gzip </code>指令。</dd>
+ <dt><code>identity</code></dt>
+ <dd>用于指代自身(例如:未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。</dd>
+</dl>
+
+<h2 id="示例">示例</h2>
+
+<h3 id="分块编码">分块编码</h3>
+
+<p>分块编码主要应用于如下场景,即要传输大量的数据,但是在请求在没有被处理完之前响应的长度是无法获得的。例如,当需要用从数据库中查询获得的数据生成一个大的HTML表格的时候,或者需要传输大量的图片的时候。一个分块响应形式如下:</p>
+
+<pre>HTTP/1.1 200 OK
+Content-Type: text/plain
+Transfer-Encoding: chunked
+
+7\r\n
+Mozilla\r\n
+9\r\n
+Developer\r\n
+7\r\n
+Network\r\n
+0\r\n
+\r\n</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7230", "Transfer-Encoding", "3.3.1")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</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.Transfer-Encoding")}}</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>{{HTTPHeader("Accept-Encoding")}}</li>
+ <li>{{HTTPHeader("Content-Encoding")}}</li>
+ <li>{{HTTPHeader("Content-Length")}}</li>
+ <li>Header fields that regulate the use of trailers: {{HTTPHeader("TE")}} (requests) and {{HTTPHeader("Trailer")}} (responses).</li>
+ <li>
+ <p><a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">Chunked transfer encoding</a></p>
+ </li>
+</ul>