Fetch | Заголовок «Content-Type» — efim360.ru
Версия документа от 08 ноября 2021 года. Может измениться в будущем.
Заголовок `Content-Type` в значительной степени определен в HTTP. Его модель обработки определяется здесь, поскольку ABNF, определенный в HTTP, несовместим с веб-контентом. [HTTP]
Видеоролик
Чтобы извлечь тип MIME (extract a MIME type) из списка заголовков headers, выполните следующие действия:
1. Пусть кодировка charset будет null. 2. Пусть сущность essence будет null. 3. Пусть mimeType будет null. 4. Пусть значения values будут результатом получения, декодирования и разделения `Content-Type` из заголовков headers. 5. Если значение values равно null, вернуть ошибку. 6. Для каждого value из values: 6.1 Пусть temporaryMimeType будет результатом синтаксического анализа значения value. 6.2 Если temporaryMimeType является ошибкой или его сущность "*/*", продолжайте. 6.3 Задайте для mimeType значение temporaryMimeType. 6.4 Если сущность mimeType не является сущностью essence, тогда: 6.4.1 Установите charset значение null. 6.4.2 Если параметры mimeType ["charset "] существуют, установите для charset значение mimeType параметры ["charset"]. 6.4.3 Установите essence на сущность mimeTypes. 6.5 В противном случае, если параметры mimeType ["charset"] не существуют, а charset не равен null, установите для параметров mimeType ["charset"] значение charset. 7. Если mimeType имеет значение null, вернуть ошибку. 8. Вернуть mimeType
ПРЕДУПРЕЖДЕНИЕ!
Когда извлечение типа MIME возвращает ошибку или тип MIME, сущность которого неверна для данного формата, рассматривайте это как фатальную ошибку. Существующие функции веб-платформы не всегда следовали этой схеме, которая на протяжении многих лет была основным источником уязвимостей в этих функциях. Напротив, параметры типа MIME обычно можно игнорировать.
Пример
Вот как на практике извлечь функции типа MIME:
Заголовки (как в сети) | Вывод (сериализованный) |
---|---|
Content-Type: text/plain;charset=gbk, text/html | text/html |
Content-Type: text/html;charset=gbk;a=b, text/html;x=y | text/html;x=y;charset=gbk |
Content-Type: text/html;charset=gbk;a=b Content-Type: text/html;x=y | text/html;x=y;charset=gbk |
Content-Type: text/html;charset=gbk Content-Type: x/x Content-Type: text/html;x=y | text/html;x=y |
Content-Type: text/html Content-Type: cannot-parse | text/html |
Content-Type: text/html Content-Type: */* | text/html |
Content-Type: text/html Content-Type: | text/html |
Информационные ссылки
Стандарт Fetch — https://fetch.
Перевод стандарта Fetch — https://efim360.ru/fetch/
Заголовок представления Content-Type используется для указания исходного носителя ресурса (до применения любой кодировки при отправке).
Нет, Content-Type не является обязательным полем. Это не обязательно согласно спецификации HTTP 1.1. Любое сообщение HTTP/1.1, содержащее тело объекта, СЛЕДУЕТ включать поле заголовка Content-Type, определяющее тип носителя этого тела.
Заголовок представления Content-Type используется для указания исходного медиа-типа ресурса (до любого кодирования содержимого,применяемого для отправки).В ответах заголовок Content-Type предоставляет клиенту фактический тип содержимого возвращаемого содержимого.
Типом содержимого по умолчанию обычно является «application/octet-stream» с наиболее общим определением MIME/type.MIME/тип подходит для любого типа содержимого,которое может обслуживать веб-сервер.
Content-Type
заголовок представления используется , чтобы указать исходный тип носителя ресурса (до любого кодирования контента применяется для отправки).
В ответах заголовок Content-Type
предоставляет клиенту фактический тип возвращаемого содержимого. Значение этого заголовка можно игнорировать, например, когда браузеры выполняют сниффинг MIME; установите для заголовка
значение nosniff
, чтобы предотвратить такое поведение.
В запросах (таких как POST
или PUT
) клиент сообщает серверу, какой тип данных фактически отправляется.
Header type | Representation header |
---|---|
Запрещенное имя заголовка | no |
Заголовок ответа с CORS-запретом | yes |
Заголовок запроса с CORS-защитой | да, с дополнительным ограничением, что значения не могут содержать байт заголовка запроса CORS-unsafe : 0x00-0x1F (кроме 0x09 (HT)), "():<>?@[\]{} и 0x7F (DEL) .Он также должен иметь MIME-тип его анализируемого значения (без учета параметров): application/x-www-form-urlencoded , multipart/form-data или text/plain . |
Syntax
Content-Type: text/html; charset=UTF-8 Content-Type: multipart/form-data; boundary=something
Directives
media-type
Тип MIME ресурса или данных.
- charset
Стандарт кодирования символов.
- boundary
Для составных объектов требуется
boundary
директива. Директива состоит из от 1 до 70 символов из набора символов (и не заканчивается пробелом), которые, как известно, очень надежны для шлюзов электронной почты. Он используется для инкапсуляции границ нескольких частей сообщения. Часто к границе заголовка добавляются два тире, а к последней границе добавляются два тире в конце.
Examples
Content-Type
в HTML-формахВ запросе POST
, полученном в результате enctype
HTML-формы, Content-Type
запроса указывается атрибутом enctype в элементе <form>
.
<form action="/" method="post" enctype="multipart/form-data"> <input type="text" name="description" value="some text" /> <input type="file" name="myFile" /> <button type="submit">Submit</button> </form>
Запрос выглядит примерно так (здесь опущены менее интересные заголовки):
POST /foo HTTP/1.1 Content-Length: 68137 Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575 -----------------------------974767299852498929531610575 Content-Disposition: form-data; name="description" some text -----------------------------974767299852498929531610575 Content-Disposition: form-data; name="myFile"; filename="foo.txt" Content-Type: text/plain (content of the uploaded file foo.txt) -----------------------------974767299852498929531610575--
Specifications
Specification |
---|
HTTP-семантика # status.206 |
Семантика HTTP # field. content-type |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
Content-Type | Yes | 12 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
See also
Accept
Content-Disposition
-
206
Частичное содержимое X-Content-Type-Options
HTTP
-
CSP: upgrade-insecure-requests
Директива HTTP Content-Security-Policy (CSP) upgrade-insecure-requests предписывает агентам пользователя обрабатывать все URL-адреса сайта (те, которые обслуживаются, как если бы
-
CSP: worker-src
Директива worker-src HTTP Content-Security-Policy (CSP)определяет допустимые источники для сценариев SharedWorker,ServiceWorker.
-
Cookie
Заголовок HTTP-запроса Cookie содержит сохраненные файлы cookie, связанные с сервером. Заголовок Cookie является необязательным и может быть опущен, если, например, браузер
-
Cross-Origin-Embedder-Policy
Заголовок ответа HTTP Cross-Origin-Embedder-Policy (COEP) предотвращает загрузку документом любых ресурсов, которые явно не предоставляют разрешения (с использованием
- 1
- …
- 109
- 110
- 111
- 112
- 113
- …
- 405
- Next
Каковы все возможные значения для заголовка HTTP «Content-Type»?
спросил
Изменено 6 месяцев назад
Просмотрено 526 тысяч раз
Я должен проверить значение заголовка Content-Type
, прежде чем передавать его в HTTP-запрос.
Существует ли определенный список для всех возможных значений Content-Type
?
В противном случае есть ли способ проверить тип содержимого перед его использованием в HTTP-запросе?
- http
- http-заголовки
- httprequest
- тип контента
5
Здесь вы можете найти все типы контента: http://www.iana.org/assignments/media-types/media-types.xhtml
Наиболее распространенные типы:
Тип приложения:
приложение/java-архив приложение/EDI-X12 приложение/ЭДИФАКТ приложение/javascript приложение/октетный поток приложение/ogg приложение/pdf приложение/xhtml+xml приложение /x-shockwave-flash приложение/json приложение/ld+json приложение/xml приложение/zip приложение/x-www-форма-urlencoded
Тип аудио:
аудио/мпэг аудио/x-ms-wma аудио/vnd.rn-realaudio аудио/x-wav
Тип изображения:
изображений/гиф изображение/jpeg изображение/png изображение/tiff изображение/vnd. microsoft.icon изображение/x-значок изображение /vnd.djvu изображение/svg+xml
Тип составной:
составной/смешанный составной/альтернативный multipart/related (используется MHTML (почта HTML).) multipart/form-data
Введите текст:
текст/CSS текст/csv текст/html текст/javascript (устарело) текст/обычный текст/xml
Тип видео:
видео/мпэг видео/mp4 видео/быстрое время видео/x-ms-wmv видео/x-msvideo видео/xflv видео/вебм
Тип vnd:
приложение/vnd.android.package-архив приложение/vnd.oasis.opendocument.text приложение/vnd.oasis.opendocument.spreadsheet приложение/vnd.oasis.opendocument.presentation приложение /vnd.oasis.opendocument.graphics приложение /vnd.ms-excel приложение/vnd.openxmlformats-officedocument.spreadsheetml.sheet приложение /vnd.ms-Powerpoint приложение/vnd.openxmlformats-officedocument.presentationml.presentation приложение/msword приложение/vnd. openxmlformats-officedocument.wordprocessingml.document приложение/vnd.mozilla.xul+xml
0
Как определено в RFC 1341:
В расширенной нотации BNF RFC 822 поле заголовка Content-Type значение определяется следующим образом:
Content-Type := тип «/» подтип *[«;» параметр]
тип := «приложение» / «аудио» / «изображение» / «сообщение» / «составной» / «текст» /»видео»/x-токен
x-token := < Два символа "X-" следуют без промежуточный пробел, любым токеном>
подтип := токен
параметр := атрибут «=» значение
Атрибут:= токен
значение: = токен / строка в кавычках
Токен:= 1*<любой CHAR, кроме SPACE, CTL или tspecials>
tspecials := «(» / «)» / «<" / ">» / «@» ; Должен быть в / «,» / «;» / «:» / «» / <"> ; строка в кавычках, / «/» / «[» / «]» / «?» / «.» ; использовать внутри «=» значения параметров
И список известных типов MIME, которые могут следовать за ним (или, как отмечает Джо, источник IANA).
Как видите, список слишком велик, чтобы вы могли проверить его все. Что вы можете сделать, так это проверить общий формат и атрибут типа
, чтобы убедиться, что это правильно (набор опций невелик), и просто предположить, что то, что следует за ним, правильно (и, конечно, поймать любые исключения, которые могут возникнуть, когда вы используете его на практике).
Также обратите внимание на комментарий выше:
Если по какой-либо причине будет использоваться другой первичный тип, ему должно быть присвоено имя, начинающееся с «X-», чтобы указать его нестандартный статус и избежать любого потенциального конфликта с будущим официальным именем.
Вы заметите, что многие из HTTP-запросов/ответов включают в себя какой-то самоопределяемый заголовок X-
, имейте это в виду при проверке типов.
3
Я хотел бы охватить подмножество возможных значений «типа контента», ваш вопрос, похоже, сосредоточен на определении известных типов контента.
@Jeroen Ссылка RFC 1341 великолепна, но IANA хранит довольно исчерпывающий список веб-страница официально зарегистрированных типов СМИ здесь.
1
Если вы используете jaxrs или любой другой, то перед отправкой запроса будет класс с именем mediatype.User interceptor и сравните его с этим.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Тип содержимого: текст | Майкрософт учиться
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
- 000Z» data-article-date-source=»ms.date»> 21.10.2013
- 2 минуты на чтение
Тип содержимого text используется для содержимого сообщения, которое в основном представлено в удобочитаемом формате текстовых символов. Определены и идентифицированы более сложные типы текстового содержимого, чтобы можно было использовать соответствующий инструмент для отображения более сложных частей тела.
текст/расширенный [RFC1896] | Тип содержимого text/enriched должен быть достаточно простым, чтобы сделать форматированное электронное письмо с несколькими шрифтами удобочитаемым. Он использует очень ограниченный набор команд форматирования, которые начинаются с <имя_команды> и заканчиваются на имя_команды>, влияя на форматирование текста между этими двумя токенами. |
текст/html [RFC1866] | Тип содержимого text/html является типом Интернет-медиа, а также типом содержимого Многоцелевые расширения почты Интернета (MIME). Использование HTML в сообщениях MIME позволяет использовать все богатство веб-страниц в электронной почте. |
текстовый/обычный [RFC1521] | Тип содержимого text/plain является общим подтипом для обычного текста. Это значение по умолчанию, указанное в RFC 822. |
заголовки text/rfc822 [RFC1892] | Тип содержимого text/RFC 822-headers предоставляет агенту передачи сообщений (MTA) механизм для маркировки и возврата только заголовков RFC 822 ошибочного сообщения. Возвращаются только заголовки, а не полное сообщение. Возвращаемые заголовки полезны для идентификации ошибочного сообщения и диагностики проблем с доставкой. Возвращаются все заголовки, вплоть до пустой строки, следующей за заголовками. |
текст/форматированный текст [RFC1521] | Тип содержимого text/richtext устарел благодаря text/enriched. |
текст/sgml [RFC1874] | Тип содержимого text/SGML следует использовать, когда содержимое объекта стандартного обобщенного языка разметки (SGML) предназначено для чтения человеком и может быть легко распознано без программного обеспечения отображения SGML. |