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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
---
title: Content-Disposition
slug: Web/HTTP/Заголовки/Content-Disposition
tags:
- HTTP
- HTTP-заголовок
- header
translation_of: Web/HTTP/Headers/Content-Disposition
---
<div>{{HTTPSidebar}}</div>
<div>В обычном HTTP-ответе заголовок <code><strong>Content-Disposition</strong></code> является индикатором того, что ожидаемый контент ответа будет отображаться в браузере, как вэб-страница или часть вэб-страницы, или же как вложение, которое затем может быть скачано и сохранено локально.</div>
<div> </div>
<p>В случае, если тело HTTP-запроса типа <code>multipart/form-data</code>, то общий заголовок <strong><code>Content-Disposition</code></strong> используется для каждой из составных частей multipart тела для указания дополнительных сведений по полю, к которому применён заголовок. Каждая часть отделена с помощью <em>границы (boundary)</em>, определённой в заголовке {{HTTPHeader("Content-Type")}}. <code>Content-Disposition,</code> используемый непосредственно для всего тела HTTP-запроса, ни на что не влияет.</p>
<p>Заголовок <code>Content-Disposition</code> определён для более широкого контекста MIME-сообщений для e-mail, поэтому для HTTP-форм и {{HTTPMethod("POST")}}-запросов используются только несколько допустимых параметров. В контексте HTTP можно использовать только значение <code>form-data</code>, а также опциональные директивы <code>name</code> и <code>filename</code>.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Тип заголовка</th>
<td>{{Glossary("Response header", "Заголовок ответа")}} (для тела ответа простого типа)<br>
{{Glossary("General header", "Основной заголовок")}} (для каждой части составного тела)</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name", "Запрещённое имя заголовка")}}</th>
<td>нет</td>
</tr>
</tbody>
</table>
<h2 id="Синтаксис">Синтаксис</h2>
<h3 id="Как_заголовок_ответа_с_обычным_телом">Как заголовок ответа с обычным телом</h3>
<p>Первым параметром в контексте HTTP должен быть или <code>inline</code> (это значение по умолчанию, указывающее, что контент должен быть отображен внутри вэб-страницы или как вэб-страница) или <code>attachment</code> (указывает на скачиваемый контент; большинство браузеров отображают диалог "Сохранить как" с заранее заполненным именем файла из параметра <code>filename</code>, если он задан).</p>
<pre class="syntaxbox">Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"</pre>
<h3 id="Как_заголовок_в_составном_теле">Как заголовок в составном теле</h3>
<p>Первым параметром в контексте HTTP всегда является <code>form-data</code>; дополнительные параметры регистронезависимые и могут иметь аргументы, значения которых следуют после знака <code>'='</code> и берутся в кавычки. Несколько параметров разделяются через точку с запятой (<code>';'</code>).</p>
<pre class="syntaxbox">Content-Disposition: form-data
Content-Disposition: form-data; name="fieldName"
Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"</pre>
<h3 id="Директивы">Директивы</h3>
<dl>
<dt><code>name</code></dt>
<dd>За параметром следует строка с именем HTML-поля на форме, к которому относится данная часть составного тела. При работе с несколькими файлами в том же самом поле (например, атрибуты {{htmlattrxref("multiple", "input")}} элемента <code>{{HTMLElement("input","<input type=file>")}}</code>), могут быть несколько частей с одинаковым именем.<br>
Если <code>name</code> имеет значение <code>'_charset_'</code>, указывающее, что данная часть не является HTML-полем, то она содержит кодировку по умолчанию для всех частей, в которых явно кодировка не указана.</dd>
<dt><code>filename</code></dt>
<dd>За параметром указана строка с оригинальным именем передаваемого файла. Это имя опционально и не может слепо использоваться приложением: информация о пути должна быть очищена и должно быть сделано преобразование к файловой системе сервера. Этот параметр предоставляет в основном справочную информацию. Когда используется в комбинации с <code>Content-Disposition: attachment</code>, это значение будет использовано как имя файла по умолчанию для диалога "Сохранить как".</dd>
<dt>filename*</dt>
<dd>
<p>Оба параметра "filename" и "filename*" отличаются только тем, что "filename*" использует кодирование, определённое в <a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a>. Когда присутствуют оба параметра "filename" и "filename*" в одном поле заголовке, то преимущество имеет "filename*" над "filename", но только в случае когда оба значения корректны.</p>
</dd>
</dl>
<h2 id="Примеры">Примеры</h2>
<p>Ответ, вызывающий диалог "Сохранить как":</p>
<pre>200 OK
Content-Type: text/html; charset=utf-8
Content-Disposition: attachment; filename="cool.html"
Content-Length: 22
<HTML>Save me!</HTML>
</pre>
<p>Простой HTML-файл будет сохранён как обычное сохранение с диалогом "Сохранить как" вместо отображения контента файла в браузере. Большинство браузеров предложат его сохранить под именем <code>cool.html</code> (это поведение по умолчанию).</p>
<p>Пример HTML-формы, переданной через POST с использованием формата <code>multipart/form-data</code>, который использует заголовок <code>Content-Disposition</code>:</p>
<pre>POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--boundary--</pre>
<h2 id="Спецификации">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Название</th>
</tr>
<tr>
<td>{{RFC("7578")}}</td>
<td>Returning Values from Forms: multipart/form-data</td>
</tr>
<tr>
<td>{{RFC("6266")}}</td>
<td>Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)</td>
</tr>
<tr>
<td>{{RFC("2183")}}</td>
<td>Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field</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.Content-Disposition")}}</p>
<h2 id="Замечания_по_совместимости">Замечания по совместимости</h2>
<ul>
<li>Firefox 5 обрабатывает <code>Content-Disposition заголовка</code> HTTP-ответа response более эффективно, если присутствуют оба параметра <code>filename</code> и <code>filename*</code>; он просматривает сначала все предоставленные имена <code>filename*</code>, даже есть вначале идут <code>filename</code>. Ранее использовалось первое найденное имя. See {{bug(588781)}}.</li>
</ul>
<h2 id="Смотрите_также">Смотрите также</h2>
<ul>
<li><a href="/en-US/docs/Web/Guide/HTML/Forms">HTML-формы</a></li>
<li>{{HTTPHeader("Content-Type")}} определяет границу для частей составного тела.</li>
<li>Интерфейс {{domxref("FormData")}} используется для обработки данных форм для использования в API {{domxref("XMLHttpRequest")}}.</li>
</ul>
|