В этой статье
Что такое MIME-тип?
Тип MIME (Multipurpose Internet Mail Extensions type), также называемый медиатипом, — это стандартная метка, указывающая природу и формат файла или потока данных. Изначально разработанные для вложений электронной почты, MIME-типы теперь являются фундаментальными для того, как веб-браузеры, серверы и API взаимодействуют в отношении форматов контента.
Каждый HTTP-ответ включает заголовок Content-Type с MIME-типом, который сообщает браузеру, как обрабатывать данные — отображать как HTML, показывать изображение, воспроизводить аудио, загружать файл или разбирать как JSON.
Структура MIME-типа
Тип MIME состоит из типа, подтипа и необязательных параметров в формате: тип/подтип;параметр=значение.
- Тип — общая категория: text, image, audio, video, application, multipart, font или model
- Подтип — конкретный формат в рамках типа: html, png, mp4, json, pdf, octet-stream
- Параметры — необязательные пары ключ-значение: charset=utf-8 для текстовых типов, boundary для multipart-типов
Попробуйте бесплатно — без регистрации
Найти тип MIME →Распространённые MIME-типы
Сотни MIME-типов зарегистрированы в IANA (Internet Assigned Numbers Authority). Вот наиболее часто используемые.
- text/html — HTML-документы, основа каждой веб-страницы
- application/json — JSON-данные, стандартный формат для коммуникации REST API
- image/png и image/jpeg — два наиболее распространённых формата изображений в интернете
- application/pdf — PDF-документы, повсеместно используемые для печатных документов
- application/octet-stream — обобщённые двоичные данные, используемые, когда конкретный тип неизвестен или для загрузки файлов
Как работает поиск MIME-типа
Поиск MIME-типа сопоставляет расширения файлов с соответствующими MIME-типами и наоборот.
- Расширение в MIME — для расширения файла .png поиск возвращает image/png
- MIME в расширение — для MIME-типа application/pdf поиск возвращает .pdf
- Определение содержимого — когда расширения отсутствуют или вводят в заблуждение, некоторые инструменты используют магические числа (байты заголовка файла) для определения реального типа содержимого
MIME-типы в веб-разработке
Правильные MIME-типы необходимы для безопасности, производительности и функциональности веб-сайтов.
- Заголовок Content-Type — серверы должны отправлять правильный MIME-тип для каждого ответа. Отдача JavaScript как text/html может создавать уязвимости XSS
- X-Content-Type-Options: nosniff — этот заголовок безопасности предотвращает угадывание браузерами MIME-типов, применяя тип, объявленный сервером
- Заголовок Accept — клиенты отправляют заголовки Accept, чтобы сообщить серверам, какие типы содержимого они могут обрабатывать, обеспечивая согласование содержимого
Часто задаваемые вопросы
В чём разница между MIME-типом и Content-Type?
Content-Type — это HTTP-заголовок, содержащий значение MIME-типа. MIME-тип — это идентификатор формата (например, application/json), а Content-Type — имя заголовка, несущего это значение в HTTP-коммуникации.
Можно ли создать собственный MIME-тип?
Да, используя специфические для вендора подтипы с префиксом vnd. (например, application/vnd.mycompany.myformat) или личные подтипы с префиксом prs. Экспериментальные типы используют префикс x-, хотя эта конвенция постепенно выходит из употребления.
Почему мой сервер возвращает application/octet-stream для известных типов файлов?
У сервера нет сопоставления для этого расширения файла в конфигурации MIME-типов. Добавьте правильное сопоставление в конфигурацию веб-сервера (nginx.conf, .htaccess или middleware Express).