blob: c100ffd7e8aef50dbd34ebfa19a86c280cfc1524 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
---
title: Trailer
slug: Web/HTTP/Headers/Trailer
translation_of: Web/HTTP/Headers/Trailer
---
<div>{{HTTPSidebar}}</div>
<p><strong>Trailer</strong> 是一个响应首部,允许发送方在分块发送的消息后面添加额外的元信息,这些元信息可能是随着消息主体的发送动态生成的,比如消息的完整性校验,消息的数字签名,或者消息经过处理之后的最终状态等。</p>
<div class="note">
<p>请求首部 {{HTTPHeader("TE")}} 需要设置trailers来允许挂载字段。</p>
</div>
<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">Trailer: header-names</pre>
<h2 id="指令">指令</h2>
<dl>
<dt><code>header-names</code></dt>
<dd>出现在分块信息挂载部分的消息首部。以下首部字段<strong>不允许</strong>出现:
<ul>
<li>用于信息分帧的首部 (例如{{HTTPHeader("Transfer-Encoding")}} 和 {{HTTPHeader("Content-Length")}}),</li>
<li>用于路由用途的首部 (例如 {{HTTPHeader("Host")}}),</li>
<li>请求修饰首部 (例如控制类和条件类的,如{{HTTPHeader("Cache-Control")}},{{HTTPHeader("Max-Forwards")}},或者 {{HTTPHeader("TE")}}),</li>
<li>身份验证首部 (例如 {{HTTPHeader("Authorization")}} 或者 {{HTTPHeader("Set-Cookie")}}),</li>
<li>{{HTTPHeader("Content-Encoding")}}, {{HTTPHeader("Content-Type")}}, {{HTTPHeader("Content-Range")}},以及 <code>Trailer</code> 自身。</li>
</ul>
</dd>
</dl>
<h2 id="示例">示例</h2>
<h3 id="在分块传输编码中使用挂载(trailer)首部">在分块传输编码中使用挂载(trailer)首部</h3>
<p>在这个例子中, {{HTTPHeader("Expires")}} 首部出现在分块信息的结尾,作为挂载(trailer)首部。</p>
<pre>HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
Trailer: Expires
7\r\n
Mozilla\r\n
9\r\n
Developer\r\n
7\r\n
Network\r\n
0\r\n
Expires: Wed, 21 Oct 2015 07:28:00 GMT\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", "Trailer", "4.4")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td>
</tr>
<tr>
<td>{{RFC("7230", "Chunked trailer part", "4.1.2")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p>{{Compat("http.headers.Trailer")}}</p>
<h2 id="参见">参见</h2>
<ul>
<li>{{HTTPHeader("Transfer-Encoding")}}</li>
<li>{{HTTPHeader("TE")}}</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">Chunked transfer encoding</a></p>
</li>
</ul>
|