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/htmltext/html
Content-Type: text/html;charset=gbk;a=b, text/html;x=ytext/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.

spec.whatwg.org/#content-type-header

Перевод стандарта 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; установите для заголовка

X-Content-Type-Options значение nosniff , чтобы предотвратить такое поведение.

В запросах (таких как POST или PUT ) клиент сообщает серверу, какой тип данных фактически отправляется.

Header typeRepresentation 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

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebView AndroidChrome AndroidFirefox для AndroidOpera AndroidSafari на IOSSamsung 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

Наиболее распространенные типы:

  1. Тип приложения:

     приложение/java-архив
     приложение/EDI-X12
     приложение/ЭДИФАКТ
     приложение/javascript
     приложение/октетный поток
     приложение/ogg
     приложение/pdf
     приложение/xhtml+xml
     приложение /x-shockwave-flash
     приложение/json
     приложение/ld+json
     приложение/xml
     приложение/zip
     приложение/x-www-форма-urlencoded
     
  2. Тип аудио:

     аудио/мпэг
     аудио/x-ms-wma
     аудио/vnd.rn-realaudio
     аудио/x-wav
     
  3. Тип изображения:

     изображений/гиф
     изображение/jpeg
     изображение/png
     изображение/tiff
     изображение/vnd. microsoft.icon
     изображение/x-значок
     изображение /vnd.djvu
     изображение/svg+xml
     
  4. Тип составной:

     составной/смешанный
     составной/альтернативный
     multipart/related (используется MHTML (почта HTML).)
     multipart/form-data
     
  5. Введите текст:

     текст/CSS
     текст/csv
     текст/html
     текст/javascript (устарело)
     текст/обычный
     текст/xml
     
  6. Тип видео:

     видео/мпэг
     видео/mp4
     видео/быстрое время
     видео/x-ms-wmv
     видео/x-msvideo
     видео/xflv
     видео/вебм
     
  7. Тип 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 Фейсбук Электронная почта

  • Статья
  • 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *