В области информационных и коммуникационных технологий тип носителя , [1] [2] тип контента [2] [3] или тип MIME [1] [4] [5] — это двухкомпонентный идентификатор для форматов файлов и форматов контента . Их назначение сопоставимо с расширениями имен файлов и унифицированными идентификаторами типов , поскольку они идентифицируют предполагаемый формат данных. Они в основном используются технологиями, лежащими в основе Интернета , а также используются в настольных системах Linux.
Internet Assigned Numbers Authority (IANA) является официальным органом по стандартизации и публикации этих классификаций. Типы носителей были первоначально определены в Request for Comments RFC 2045 (MIME) Part One: Format of Internet Message Bodies (ноябрь 1996 г.) в ноябре 1996 г. как часть спецификации MIME (Multipurpose Internet Mail Extensions) для обозначения типа содержимого и вложений сообщений электронной почты ; [6] отсюда и первоначальное название, тип MIME . Типы носителей также используются другими интернет-протоколами, такими как HTTP , [7] форматами файлов документов, такими как HTML , [8] и спецификациями XDG , реализованными в средах рабочего стола Linux , [5] для аналогичных целей.
Различные интернет-стандарты или органы веб-стандартизации различаются по предпочтительному термину для этого типа идентификатора.
IANA и IETF используют термин «тип носителя» и считают термин «тип MIME» устаревшим, [ 1] поскольку типы носителя стали использоваться в контекстах, не связанных с электронной почтой, например, HTTP. Напротив, WHATWG продолжает использовать термин «тип MIME» и не рекомендует использовать термин «тип носителя» как двусмысленный, поскольку он используется с другим значением в связи с функцией CSS . [4] @media
Заголовок ответа HTTP для предоставления типа носителя — Content-Type
. [2] W3C использовал в качестве имени типа данных XML для типа носителя. [3] Спецификации XDG, реализованные в средах рабочего стола Linux, продолжают использовать термин «тип MIME». [5]ContentType
Тип носителя состоит из типа и подтипа , который далее структурирован в дерево . Тип носителя может опционально определять суффикс и параметры :
mime-type = тип "/" [ дерево "." ] подтип [ "+" суффикс ] * [ ";" параметр ];
Например, файл HTML может быть обозначен как text/html; charset=UTF-8
. В этом примере text
— тип, html
— подтип, а charset=UTF-8
— необязательный параметр, указывающий кодировку символов.
Типы, подтипы и имена параметров нечувствительны к регистру. Значения параметров обычно чувствительны к регистру, но могут интерпретироваться без учета регистра в зависимости от предполагаемого использования. [6]
Часть «тип» определяет широкое использование типа носителя. По состоянию на ноябрь 1996 года зарегистрированными типами были: application
, audio
, image
, message
, multipart
, text
и video
. [6] К июлю 2024 года зарегистрированные типы включали вышеперечисленное, а также font
, example
, model
, и haptics
. [1]
Неофициальным типом верхнего уровня, который широко используется, является chemical
, используемый для форматов химических файлов . [9] [10] [11] В контексте сред рабочего стола Linux используются неофициальные типы верхнего уровня inode
( иноды , отличные от обычных файлов, такие как каталоги файловой системы , файлы устройств или символические ссылки ), [12] x-content
( съемные носители , такие как x-content/image-dcf
цифровые камеры DCF ), [13] package
( пакеты менеджеров пакетов ) [14] и x-office
(общие категории документов офисного программного обеспечения ) [14] .
Подтип обычно состоит из формата носителя, но он может или должен также содержать другой контент, такой как префикс дерева, производитель, продукт или суффикс, в соответствии с различными правилами в деревьях регистрации.
Все типы носителей должны быть зарегистрированы с использованием процедур регистрации IANA. Для эффективности и гибкости процесса регистрации типов носителей в деревьях регистрации могут быть зарегистрированы различные структуры подтипов, которые различаются использованием префиксов деревьев. В настоящее время созданы следующие деревья: стандартные (без префикса), поставщик ( vnd.
префикс), личные или тщеславные ( prs.
префикс), незарегистрированные ( x.
префикс). Эти деревья регистрации были впервые определены в ноябре 1996 года (устаревший RFC 2048 - в настоящее время RFC 6838). Новые деревья регистрации могут быть созданы IETF Standards Action для внешней регистрации и управления известными постоянными организациями (например, научными обществами).
Дерево стандартов не использует никаких префиксов дерева. Примерами являются text/javascript
, image/png
. [15]
Регистрации в дереве стандартов должны быть либо связаны со спецификациями IETF, утвержденными непосредственно IESG, либо зарегистрированы признанной IANA организацией, связанной со стандартами.
Дерево поставщиков включает типы носителей, связанные с общедоступными продуктами. Оно использует vnd.
префикс tree. Примеры: application/vnd.ms-excel
, application/vnd.oasis.opendocument.text
.
Термины «поставщик» и «производитель» считаются эквивалентными в контексте. Отраслевые консорциумы, а также некоммерческие организации могут регистрировать типы носителей в дереве поставщиков. Регистрация в дереве поставщиков может быть создана любым человеком, которому необходимо обмениваться файлами, связанными с каким-либо программным продуктом или набором продуктов. Однако регистрация принадлежит поставщику или организации, производящей программное обеспечение, которое использует регистрируемый тип, и этот поставщик или организация могут в любое время принять решение о признании права собственности на регистрацию, выполненную третьей стороной.
Персональное или тщеславное дерево включает типы носителей, связанные с непублично доступными продуктами или экспериментальными типами носителей. Оно использует prs.
префикс tree. Примерами являются audio/prs.sid
, image/prs.btif
.
Незарегистрированное дерево включает типы носителей, предназначенные исключительно для использования в частных средах и только с активного соглашения сторон, обменивающихся ими. Оно использует x.
префикс дерева. Примерами являются application/x.foo
, video/x.bar
. Типы носителей в этом дереве не могут быть зарегистрированы.
Этот тип был первоначально определен в RFC 1590 (опубликован в сентябре 1993 года) с использованием префикса x-
or X-
. RFC 2048 (опубликован в ноябре 1996 года) ввел x.
префикс, но не рекомендовал использовать незарегистрированное дерево, поскольку теперь доступны новые персональные и вендоры с ослабленными требованиями к регистрации. Текущий RFC 6838 (опубликован в январе 2013 года) сохраняет ту же рекомендацию, но подтипы с префиксом x-
or X-
больше не считаются членами этого дерева.
Типы носителей, которые были широко распространены (с подтипом с префиксом x-
или X-
) без регистрации, должны быть, если возможно, перерегистрированы с соответствующим префиксным подтипом. Если это невозможно, тип носителя может быть зарегистрирован в дереве стандартов с его подтипом без префикса после одобрения как рецензентом типов носителей, так и IESG. application/x-www-form-urlencoded
является примером широко распространенного типа, который в конечном итоге был зарегистрирован с x-
префиксом. [16]
Суффикс — это дополнение к определению типа носителя для дополнительного указания базовой структуры этого типа носителя, что позволяет выполнять общую обработку на основе этой структуры и независимо от конкретной семантики конкретного типа. Типы носителей, которые используют именованный структурированный синтаксис, должны использовать соответствующий зарегистрированный IANA "+"suffix
для этого структурированного синтаксиса при регистрации. Незарегистрированные суффиксы не должны использоваться (с января 2013 г.). Процедуры регистрации суффиксов структурированного синтаксиса определены в RFC 6838. [15]
Суффикс +xml был определен с января 2001 года (RFC 3023 [17] ), и был официально включен в первоначальное содержимое Реестра суффиксов структурированного синтаксиса вместе с +json
, +ber
, +der
, +fastinfoset
, +wbxml
и +zip
в январе 2013 года (RFC 6839). Последующие дополнения включают +gzip
, +cbor
, +json-seq
, и +cbor-seq
. [18]
Из реестра IANA: [1]
application/json
application/ld+json
( JSON-LD )application/msword
(.doc)application/pdf
application/sql
application/vnd.api+json
application/vnd.microsoft.portable-executable
(.efi, .exe, .dll)application/vnd.ms-excel
(.xls)application/vnd.ms-powerpoint
(.ppt)application/vnd.oasis.opendocument.text
(.odt)application/vnd.openxmlformats-officedocument.presentationml.presentation
(.pptx)application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
(.xlsx)application/vnd.openxmlformats-officedocument.wordprocessingml.document
(.docx)application/x-www-form-urlencoded
application/xml
application/zip
application/zstd
(.zst)audio/mpeg
audio/ogg
image/avif
image/jpeg
(.jpg, .jpeg, .jfif, .pjpeg, .pjp) [19]image/png
image/svg+xml
(.svg)image/tiff
(.tif)model/obj
(.obj)multipart/form-data
text/plain
text/css
text/csv
text/html
text/javascript
(.js)text/xml
Mailcap (происходит от фразы "mail capacity") — это тип метафайла, используемый для настройки того, как приложения с поддержкой MIME, такие как почтовые клиенты и веб-браузеры, отображают файлы различных типов MIME. Формат mailcap определен в RFC 1524 "A User Agent Configuration Mechanism for Multimedia Mail Format Information", но не определен как стандарт Интернета. Он поддерживается большинством систем Unix.
Строки могут быть комментариями, начинающимися с символа #, или MIME-типом, за которым следует инструкция по обработке этого MIME-типа.
Связанный файл — это файл mime.types , который связывает расширения имен файлов с типом MIME . Если тип MIME установлен правильно, это не нужно, но типы MIME могут быть установлены неправильно или установлены на общий тип, такой как application/octet-stream
, и mime.types позволяет в этих случаях вернуться к расширению. Аналогично, поскольку многие файловые системы не хранят информацию о типе MIME, а вместо этого полагаются на расширение имени файла, файл mime.types часто используется веб-серверами для определения типа MIME.
При просмотре файла эти два параметра работают вместе следующим образом: mime.types
связывают расширение с типом MIME, а mailcap
тип MIME — с программой.
В системах типа UNIX файл mime.types обычно находится в и/или , а формат заключается в том, что каждая строка представляет собой список типов MIME, разделенных пробелами, за которыми следует ноль или более расширений. Например, тип HTML может быть связан с расширениями и следующей строкой:/etc/mime.types
$HOME/.mime.types
.htm
.html
текст/html htm html
Файл mime.types появился в Netscape , где использовался другой формат; [20] он использовал пары «ключ-значение» и список расширений, разделенных запятыми, вместе со стандартным заголовком, состоящим из специального комментария, который идентифицирует файл как файл mime.types, следующим образом:
#--Информация MIME корпорации Netscape Communications# Не удаляйте указанную выше строку. Она используется для определения типа файла.тип=текст/html расширений=htm,html
[RFC2046] указывает, что типы носителей (ранее известные как типы MIME) и подтипы носителей будут назначаться и перечисляться IANA.
HTTP использует типы носителя [RFC2046] в полях заголовка Content-Type (раздел 8.3) и Accept (раздел 12.5.1) для обеспечения открытой и расширяемой типизации данных и согласования типов.
ContentType: Тип носителя, согласно [RFC2045].
Стандартам рекомендуется последовательно использовать термин тип MIME, чтобы избежать путаницы с использованием
типа носителя,
как описано в
Media Queries
.