Видео и субтитры · Загрузчик медиафайлов по прямой ссылке
Типы MIME и Content-Type: как в Интернете маркируются медиафайлы для загрузки.
· Фон
http СМИ веб-основы
Расширения — это соглашение об именах файлов; Типы MIME – это то, как серверы сообщают браузерам, что представляет собой файл. В этом посте объясняется, откуда взялись типы MIME, как Content-Type формирует загрузку и что происходит, когда эти два типа не совпадают.
Файл называется .mp4, но браузер воспринимает его как текст — это несоответствие, для предотвращения которого были разработаны типы MIME.
Путь, заканчивающийся `.mp4`, может использоваться как текст, а путь без суффикса может содержать допустимое видео. Расширения принадлежат именам; HTTP Content-Type принадлежит метаданным ответа.
Direct Media Downloader считывает этот заголовок во время HEAD, когда CORS предоставляет его, и снова из GET. Он отображает значение, использует его как тип Blob и рассматривает значения, выглядящие как мультимедиа, как рекомендацию, а не как блокирующий сертификат. Таким образом, неправильный заголовок может изменить поведение до того, как какой-либо игрок проверит полезную нагрузку, особенно если в противном случае ответ отображался бы в строке. Неточная метка может повлиять на обработку до того, как какой-либо игрок проверит тело, особенно если в противном случае браузер отображал бы медиафайл в строке.
От вложений электронной почты до HTTP — как типы MIME начинались как способ маркировки частей электронного письма и стали системой маркировки файлов в Интернете.
MIME начинался как система маркировки частей сообщения и стал словарем, используемым HTTP для представлений. Тип носителя имеет тип и подтип верхнего уровня, за которыми необязательно следуют параметры.
Метка помогает браузерам выбирать обработку, но ею управляет отправляющий сервер. Сегмент хранилища с плохими метаданными может обслуживать правильные байты с бесполезным общим значением. HTTP принял реестр, потому что совместимые метки предпочтительнее для каждого клиента, придумывающего смысл из имен файлов или недокументированных предположений байтов. Совместная регистрация заменила несовместимые соглашения о частных именах метками, которые почтовые и веб-клиенты могли интерпретировать согласованно.
Чтение заголовка Content-Type — тип, подтип и параметры, с video/mp4, audio/mpeg и application/octet-stream в качестве распространенных случаев
`video/mp4` описывает медиа-представление MP4, `audio/mpeg` описывает аудио MPEG, а `application/octet-stream` является общей двоичной меткой. Параметр charset является общим для текста, но не идентифицирует медиакодек.
ToolAcre сохраняет полную строку заголовка. Его рекомендации `looksLikeMedia` распознают метки видео, аудио и MPEGURL; поток октетов вызывает предупреждение без автоматического отклонения. Параметры следует интерпретировать в соответствии со спецификацией типа носителя; их простое присутствие не преобразует один тип верхнего уровня в другой. Параметры должны считываться согласно применимому определению типа; их присутствие не меняет бинарный ответ на другое семейство верхнего уровня.
Сниффинг и его ограничения: почему браузеры иногда догадываются и почему догадки могут быть ошибочными или намеренно отключены
Браузеры иногда проверяют байты, когда метаданные отсутствуют или неоднозначны, но анализ ограничен в целях безопасности и согласованности. Сервер может отключить некоторые предположения, и поведение зависит от контекста.
Загрузчик не реализует собственный сканер подписи. Он не открывает контейнер и не переопределяет объявленный MIME после проверки кодеков, поэтому не утверждайте, что он исправляет метаданные хоста. Заголовки безопасности, такие как `X-Content-Type-Options: nosniff`, могут намеренно ограничивать догадки, возлагая большую ответственность на точную настройку сервера. Ответ `nosniff` может намеренно уменьшить вероятность догадок, делая правильные метаданные происхождения более важными, а не требуя восстановления клиента.
Расширения и типы MIME — которым на самом деле доверяют игроки, операционные системы и инструменты браузера
Игроки и операционные системы могут учитывать расширение, MIME, байтовые подписи и доступные кодеки в разном порядке. Ни один бренд не приносит универсального успеха всем потребителям.
Резервное имя файла ToolAcre использует Content-Type только тогда, когда Content-Disposition и последний сегмент пути отсутствуют. Он распознает там WebM и MP4; в противном случае общее имя заканчивается на `.bin`. В процессе работы с архивом следует фиксировать обе метки, поскольку разногласия являются диагностическим свидетельством, а не причиной молча перезаписать одну другой. Архивируйте оба значения, если они не совпадают, поскольку это несоответствие является полезным диагностическим свидетельством конфигурации доставки.
Проработанный пример: исправление сегмента хранилища, который обслуживает все в виде октетного потока — что меняется для загрузки и сохраненного файла
Если сегмент хранилища обслуживает каждый объект как поток октетов, обновите метаданные в источнике. Тот же авторизованный файл может затем создать более четкую пробную строку и правильно типизированный большой двоичный объект при последующих запросах.
Существующий путь или имя Content-Disposition могут остаться неизменными, поскольку приоритет имени файла является отдельным. Исправление заголовка MIME не приводит к перекодированию байтов и не исправляет вводящее в заблуждение расширение, уже предоставленное где-то еще. Повторите запрос после распространения метаданных и подтвердите фактический ответ, поскольку изменение поля консоли хранилища не доказывает, что каждый кеш CDN теперь его обслуживает. После изменения метаданных сегмента проверьте производственный ответ после распространения кэша, а не доверяйте подтверждению сохранения на панели управления.
Чего это не касается — контейнера и кодека внутри файла, чего не может гарантировать ни один заголовок.
Content-Type не может гарантировать достоверность контейнера, кодеки, продолжительность, целостность, безопасность или возможность воспроизведения. Сервер может лгать случайно или намеренно, а передача может завершиться раньше обещанного срока.
Используйте проверенное программное обеспечение для проверки контейнеров и кодеков. Работа загрузчика заканчивается сохранением полученного тела и раскрытием наблюдаемой метки сервера. Контрольные суммы и специальные проверки могут повысить уверенность в точности байтов, но ни то, ни другое не реализовано в этом интерфейсе сохранения файлов. Контрольные суммы и проверка контейнеров могут установить дополнительные факты, но ни одна из функций не принадлежит этому специализированному интерфейсу загрузчика. Таким образом, знакомый ярлык должен направлять расследование, не заканчивая его.
Вывод: метки имеют значение — как тип контента прямой ссылки влияет на то, что сохраняет Direct Media Downloader
Метки формируют обработку, предупреждения и резервные имена, поэтому они имеют значение, хотя и не являются доказательствами. Сравните заголовок, имя файла, известный источник, количество байтов и воспроизведение как отдельные доказательства.
Direct Media Downloader сообщает об отсутствующем типе как «не указанном сервером» и избегает создания другого типа, кроме резервного Blob. Это ограничение делает неправильную конфигурацию видимой для человека, который может исправить хост. Для владельцев хостов исправление метаданных во время загрузки приносит пользу каждому браузеру и клиенту, а не требует от каждого посетителя восстанавливать метку после загрузки. После этого еще раз проверьте доставленный ответ.