- Content-Disposition
- Синтаксис
- Как заголовок ответа с обычным телом
- Как заголовок в составном теле
- Директивы
- Примеры
- Спецификации
- Совместимость с браузерами
- Замечания по совместимости
- Смотрите также
- Found a content problem with this page?
- POST
- Синтаксис
- Пример
- Спецификация
- Совместимость с браузерами
- Смотрите также
- Found a content problem with this page?
Content-Disposition
В обычном HTTP-ответе заголовок Content-Disposition является индикатором того, что ожидаемый контент ответа будет отображаться в браузере, как веб-страница или часть веб-страницы, или же как вложение, которое затем может быть скачано и сохранено локально.
В случае, если тело HTTP-запроса типа multipart/form-data , то общий заголовок Content-Disposition используется для каждой из составных частей multipart тела для указания дополнительных сведений по полю, к которому применён заголовок. Каждая часть отделена с помощью границы (boundary), определённой в заголовке Content-Type . Content-Disposition, используемый непосредственно для всего тела HTTP-запроса, ни на что не влияет.
Заголовок Content-Disposition определён для более широкого контекста MIME-сообщений для e-mail, поэтому для HTTP-форм и POST -запросов используются только несколько допустимых параметров. В контексте HTTP можно использовать только значение form-data , а также опциональные директивы name и filename .
Тип заголовка | Заголовок ответа (en-US) (для тела ответа простого типа) Основной заголовок (для каждой части составного тела) |
---|---|
Запрещённое имя заголовка | нет |
Синтаксис
Как заголовок ответа с обычным телом
Первым параметром в контексте HTTP должен быть или inline (это значение по умолчанию, указывающее, что контент должен быть отображён внутри веб-страницы или как веб-страница) или attachment (указывает на скачиваемый контент; большинство браузеров отображают диалог «Сохранить как» с заранее заполненным именем файла из параметра filename , если он задан).
Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg"
Как заголовок в составном теле
Первым параметром в контексте HTTP всегда является form-data ; дополнительные параметры регистронезависимые и могут иметь аргументы, значения которых следуют после знака ‘=’ и берутся в кавычки. Несколько параметров разделяются через точку с запятой ( ‘;’ ).
Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"
Директивы
За параметром указана строка с оригинальным именем передаваемого файла. Это имя опционально и не может слепо использоваться приложением: информация о пути должна быть очищена и должно быть сделано преобразование к файловой системе сервера. Этот параметр предоставляет в основном справочную информацию. Когда используется в комбинации с Content-Disposition: attachment , это значение будет использовано как имя файла по умолчанию для диалога «Сохранить как».
Оба параметра «filename» и «filename*» отличаются только тем, что «filename*» использует кодирование, определённое в RFC 5987. Когда присутствуют оба параметра «filename» и «filename*» в одном поле заголовке, то преимущество имеет «filename*» над «filename», но только в случае когда оба значения корректны.
Примеры
Ответ, вызывающий диалог «Сохранить как»:
200 OK Content-Type: text/html; charset=utf-8 Content-Disposition: attachment; filename="cool.html" Content-Length: 22 Save me!
Простой HTML-файл будет сохранён как обычное сохранение с диалогом «Сохранить как» вместо отображения контента файла в браузере. Большинство браузеров предложат его сохранить под именем cool.html (это поведение по умолчанию).
Пример HTML-формы, переданной через POST с использованием формата multipart/form-data , который использует заголовок Content-Disposition :
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--
Спецификации
Спецификация | Название |
---|---|
RFC 7578 | Returning Values from Forms: multipart/form-data |
RFC 6266 | Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) |
RFC 2183 | Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field |
Совместимость с браузерами
BCD tables only load in the browser
Замечания по совместимости
- Firefox 5 обрабатывает Content-Disposition заголовка HTTP-ответа response более эффективно, если присутствуют оба параметра filename и filename* ; он просматривает сначала все предоставленные имена filename* , даже есть вначале идут filename . Ранее использовалось первое найденное имя. See баг 588781.
Смотрите также
- HTML-формы
- Content-Type определяет границу для частей составного тела.
- Интерфейс FormData используется для обработки данных форм для использования в API XMLHttpRequest .
Found a content problem with this page?
This page was last modified on 21 июн. 2023 г. by MDN contributors.
Your blueprint for a better internet.
POST
HTTP-метод POST предназначен для отправки данных на сервер. Тип тела запроса указывается в заголовке Content-Type .
Разница между PUT и POST состоит в том, что PUT является идемпотентным: повторное его применение даёт тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же метода POST может иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.
Запрос POST обычно отправляется через форму HTML и приводит к изменению на сервере. element or the formenctype attribute of the or elements:»>В этом случае тип содержимого выбирается путём размещения соответствующей строки в атрибуте enctype элемента или formenctype атрибута элементов или :
- application/x-www-form-urlencoded : значения кодируются в кортежах с ключом, разделённых символом ‘&’ , с ‘=’ между ключом и значением. Не буквенно-цифровые символы — percent encoded: это причина, по которой этот тип не подходит для использования с двоичными данными (вместо этого используйте multipart/form-data )
- multipart/form-data : каждое значение посылается как блок данных («body part»), с заданными пользовательским клиентом разделителем («boundary»), разделяющим каждую часть. Эти ключи даются в заголовки Content-Disposition каждой части
- text/plain
Когда запрос POST отправляется с помощью метода, отличного от HTML-формы, — например, через XMLHttpRequest — тело может принимать любой тип. Как описано в спецификации HTTP 1.1, POST предназначен для обеспечения единообразного метода для покрытия следующих функций:
- Аннотация существующих ресурсов
- Публикация сообщения на доске объявлений, в новостной группе, в списке рассылки или в аналогичной группе статей;
- Добавление нового пользователя посредством модальности регистрации;
- Предоставление блока данных, например, результата отправки формы, процессу обработки данных;
- Расширение базы данных с помощью операции добавления.
Синтаксис
Пример
Простая форма запроса, используя стандартный application/x-www-form-urlencoded content type:
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--
Спецификация
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
Found a content problem with this page?
This page was last modified on 21 июн. 2023 г. by MDN contributors.
Your blueprint for a better internet.