Открыть сервис

MIME-типы

MIME-тип (Multipurpose Internet Mail Extensions, многоцелевые расширения интернет-почты) — это стандартизированный идентификатор, который указывает характер и формат содержимого файла, передаваемого по сети. MIME-типы используются для того, чтобы программы (веб-браузеры, почтовые клиенты, серверы) могли корректно обрабатывать данные: отображать их, запускать соответствующие приложения или сохранять на диск. Каждый MIME-тип состоит из двух частей: основного типа (например, text, image) и подтипа (например, html, jpeg), разделённых косой чертой.

История и происхождение

Стандарт MIME был разработан в начале 1990-х годов для решения проблемы передачи нетекстовых данных (изображений, аудио, видео) через протокол электронной почты SMTP, который изначально поддерживал только текст в кодировке ASCII. Авторами спецификации выступили Натан Боренштейн (Nathan Borenstein) и Нед Фрид (Ned Freed). Первая версия стандарта была опубликована в 1992 году в документах RFC 1341 и RFC 1521. Позднее MIME был адаптирован для протокола HTTP, что позволило веб-серверам сообщать браузерам о типе передаваемых ресурсов.

Первоначально MIME-типы предназначались для вложений в электронные письма, но с развитием Всемирной паутины (World Wide Web) они стали неотъемлемой частью передачи данных в интернете. В 1996 году стандарт был расширен и уточнён в RFC 2045–2049, которые остаются основой современной системы MIME-типов.

Структура MIME-типа

MIME-тип имеет формат тип/подтип и может содержать дополнительные параметры (например, charset для текстовых данных). Основные типы, зарегистрированные в IANA (Internet Assigned Numbers Authority), включают:

  • text — текстовые данные (например, text/plain, text/html, text/css).
  • image — изображения (например, image/jpeg, image/png, image/gif).
  • audio — аудиофайлы (например, audio/mpeg, audio/wav, audio/ogg).
  • video — видеофайлы (например, video/mp4, video/webm, video/avi).
  • application — двоичные данные, исполняемые файлы, документы специфических форматов (например, application/pdf, application/json, application/zip, application/octet-stream).
  • multipart — составные данные, состоящие из нескольких частей (например, multipart/form-data для отправки форм, multipart/mixed для вложений в письмах).
  • message — сообщения электронной почты (например, message/rfc822).
  • model — трёхмерные модели (например, model/obj, model/stl).
  • font — шрифты (например, font/ttf, font/woff2).

Подтипы могут быть стандартизированными (зарегистрированными в IANA) или нестандартными (с префиксом x-, например, application/x-shockwave-flash). Для идентификации неизвестного типа данных часто используется application/octet-stream, который указывает на произвольный двоичный файл.

Применение в вебе

В протоколе HTTP MIME-типы передаются в заголовке Content-Type, который сервер отправляет вместе с ответом. Браузер на основе этого заголовка решает, как обработать полученные данные: отобразить как HTML-страницу, загрузить как изображение, запустить скачивание файла или открыть его в соответствующем плагине. Если MIME-тип указан неверно или отсутствует, браузер может попытаться определить тип по содержимому (MIME sniffing), что иногда приводит к ошибкам отображения или уязвимостям безопасности.

Примеры соответствия расширений файлов и MIME-типов:

Расширение файлаMIME-тип
.htmltext/html
.csstext/css
.jstext/javascript (или application/javascript)
.jpg, .jpegimage/jpeg
.pngimage/png
.gifimage/gif
.svgimage/svg+xml
.pdfapplication/pdf
.zipapplication/zip
.mp3audio/mpeg
.mp4video/mp4
.jsonapplication/json

Роль в электронной почте

В протоколе SMTP MIME-типы используются в заголовках Content-Type и Content-Transfer-Encoding для описания вложений и кодирования нетекстовых данных. Стандарт MIME также определяет механизм кодирования двоичных данных в текст (например, Base64) и возможность разбиения сообщений на части (multipart). Это позволяет отправлять в письмах изображения, документы и другие файлы, которые почтовые клиенты могут корректно распознать и отобразить.

Регистрация и управление

Официальный реестр MIME-типов ведётся организацией IANA (Internet Assigned Numbers Authority). Для регистрации нового типа необходимо подать заявку, которая проходит процедуру экспертизы. Существуют также временные или неофициальные MIME-типы, используемые разработчиками для тестирования или внутренних нужд. В операционных системах (Windows, macOS, Linux) MIME-типы сопоставляются с приложениями через реестр или файлы конфигурации (например, /etc/mime.types в Unix-подобных системах).

Проблемы и безопасность

Некорректное указание MIME-типа может привести к уязвимостям. Например, если сервер отправляет вредоносный файл с MIME-типом image/jpeg, а браузер обрабатывает его как HTML, может произойти межсайтовый скриптинг (XSS). Для предотвращения этого современные браузеры реализуют механизмы защиты, такие как заголовок X-Content-Type-Options: nosniff, который запрещает MIME-сниффинг. Также существуют стандарты Content Security Policy (CSP), ограничивающие типы загружаемых ресурсов.

Примеры использования в разработке

При разработке веб-приложений и API MIME-типы играют ключевую роль в согласовании содержимого (content negotiation). Клиент может указать в заголовке Accept предпочтительные типы данных, а сервер — вернуть ответ в соответствующем формате. Например, REST API часто возвращает данные в формате JSON (application/json) или XML (application/xml). В HTML-формах для загрузки файлов используется тип multipart/form-data.

Интересные факты

  • MIME-тип application/octet-stream является универсальным для двоичных данных и часто используется для скачивания файлов неизвестного формата.
  • Существуют MIME-типы для шрифтов (font/woff2, font/ttf), которые были добавлены относительно недавно.
  • Некоторые MIME-типы, такие как text/javascript, исторически были заменены на application/javascript, но оба варианта поддерживаются браузерами.
  • В стандарте MIME также определён тип message/partial, позволяющий разбивать большие сообщения на части для передачи по почте.

Источники

  • RFC 2045–2049: Multipurpose Internet Mail Extensions (MIME)
  • RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
  • IANA Media Types Registry
  • Документация Mozilla Developer Network (MDN) по MIME-типам

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →