简体中文

视频和字幕·直接媒体下载器

MIME 类型和内容类型:网络如何标记媒体文件以供下载

· 背景

http 媒体 网络基础知识

与下载的媒体文件对齐的响应内容类型标签
原始 ToolAcre 矢量图

扩展名是一种文件名约定; MIME 类型是服务器告诉浏览器文件是什么的方式。这篇文章解释了 MIME 类型的来源、Content-Type 如何塑造下载以及两者不一致时会发生什么。

该文件名为 .mp4,但浏览器将其视为文本 — MIME 类型旨在防止这种不匹配

以 `.mp4` 结尾的路径可以作为文本,而没有后缀的路径可以携带有效的视频。扩展名属于名称; HTTP Content-Type 属于响应元数据。

当 CORS 公开该标头时,直接媒体下载器会在 HEAD 期间读取该标头,并再次从 GET 中读取该标头。它显示该值,将其用作 Blob 类型,并将媒体外观值视为建议而不是阻止证书。因此,错误的标头可能会在任何玩家检查有效负载之前改变行为,特别是当响应以其他方式内联显示时。不准确的标签可能会影响任何播放器检查正文之前的处理,尤其是当浏览器以其他方式呈现内联媒体时。

从电子邮件附件到 HTTP — MIME 类型如何开始作为标记电子邮件部分的一种方式并成为 Web 的文件标记系统

MIME 最初是一个用于标记消息部分的系统,后来成为 HTTP 用于表示的词汇表。媒体类型具有顶级类型和子类型,可选地后跟参数。

标签帮助浏览器选择处理,但发送服务器控制它。元数据较差的存储桶可以在无用的通用值下提供正确的字节。 HTTP 采用了注册表,因为可互操作的标签更适合每个从文件名或未记录的字节猜测中发明含义的客户端。共享注册用邮件和 Web 客户端可以一致解释的标签取代了不兼容的私有命名约定。

读取 Content-Type 标头 — 类型、子类型和参数,常见情况为 video/mp4, audio/mpeg 和 application/octet-stream

`video/mp4` 描述 MP4 媒体表示形式,`audio/mpeg` 描述 MPEG 音频,`application/octet-stream` 是通用二进制标签。字符集参数对于文本很常见,但不标识媒体编解码器。

ToolAcre 保留完整的标头字符串。其 `looksLikeMedia` 公告可识别视频、音频和 MPEGURL 标签;八位字节流会触发警告,但不会自动拒绝。参数应根据媒体类型的规范进行解释;它们的存在并不会将一种顶级类型转换为另一种顶级类型。参数必须在适用的类型定义下读取;他们的存在不会将二元响应改变为不同的顶级家族。

嗅探及其限制 - 为什么浏览器有时会猜测以及为什么猜测可能是错误的或故意禁用

当元数据丢失或不明确时,浏览器有时会检查字节,但为了安全性和一致性,嗅探受到限制。服务器可以禁用某些猜测,并且行为因上下文而异。

下载器没有实现自己的签名扫描器。它既不会打开容器,也不会在检查编解码器后覆盖声明的 MIME,因此请避免声称它更正了主机元数据。诸如 `X-Content-Type-Options: nosniff` 之类的安全标头可以有意限制猜测,从而对准确的服务器配置承担更大的责任。 `nosniff` 响应可以有意减少猜测,使正确的源元数据更加重要,而不是邀请客户端修复。

扩展与 MIME 类型 — 播放器、操作系统和浏览器工具真正信任哪一个

播放器和操作系统可以按不同的顺序考虑扩展、MIME、字节签名和可用编解码器。没有一个品牌能够普遍赢得所有消费者的青睐。

ToolAcre 的后备文件名仅在 Content-Disposition 和最终路径段不存在时才使用 Content-Type。它可以识别 WebM 和 MP4;否则,通用名称以 `.bin` 结尾。归档工作流程应该记录这两个标签,因为分歧是诊断证据,而不是默默地用另一个标签覆盖的原因。当两个值不一致时将其存档,因为这种不匹配是有关交付配置的有用诊断证据。

工作示例:修复一个将所有内容作为八位字节流提供服务的存储桶 - 下载和保存的文件发生了什么变化

如果存储桶将每个对象作为八位字节流提供服务,请在源处更新元数据。然后,同一授权文件可以在以后的请求中生成更清晰的探测行和正确类型的 Blob。

现有路径或内容处置名称可能保持不变,因为文件名优先级是分开的。修复 MIME 标头不会对字节进行转码或修复其他地方已提供的误导性扩展。在元数据传播后重复请求并确认实际响应,因为更改存储控制台字段并不能证明每个 CDN 缓存现在都提供服务。更改存储桶元数据后,在缓存传播后验证生产响应,而不是信任控制面板保存确认。

这不包括文件内的容器和编解码器,没有标头可以保证

Content-Type 无法保证容器有效性、编解码器、持续时间、完整性、安全性或可玩性。服务器可能会无意或故意撒谎,并且传输可能会在承诺的长度之前结束。

使用可信的检查软件来解决容器和编解码器问题。下载器的工作以保存接收到的主体并公开其观察到的服务器标签结束。校验和和专门的探测可以增加对确切字节的信心,但这两者都不是由这个文件保存接口实现的。校验和和容器探测可以建立额外的事实,但这两个功能都不属于这个集中的下载器接口。因此,熟悉的标签应该指导调查而不结束调查。

要点:标签很重要 - 直接链接的内容类型如何影响直接媒体下载器保存的内容

标记形状处理、警告和后备命名,因此即使它们不是证据,它们也很重要。将标头、文件名、已知来源、字节数和回放作为单独的证据进行比较。

Direct Media Downloader 将缺少的类型报告为“服务器未声明”,并避免发明一种超出 Blob 后备的类型。这种限制使得能够修复主机的人可以看到错误配置。对于主机所有者来说,在上传时更正元数据有利于每个浏览器和客户端,而不是要求每个访问者在下载后修复标签。之后重新检查交付的响应。