• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_mime_magic

    描述:通过查看其内容的几个字节来确定文件的 MIME 类型
    状态:延期
    模块标识符:mime_magic_module
    源文件:mod_mime_magic.c

    摘要

    该模块以与 Unix file(1)命令相同的方式确定_f_ files:它查看文件的前几个字节。它旨在作为mod_mime无法解决的案件的“第二防线”。

    该模块源自 Unix 的file(1)命令的自由 version,它使用“magic numbers”和文件内容中的其他提示来确定内容是什么。仅当MimeMagicFile指令指定魔术文件时,此模块才有效。

    魔术文件的格式

    该文件的内容是 4-5 列中的纯 ASCII 文本。允许空白 lines 但忽略。注释 lines 使用哈希标记(#)。其余的 lines 被解析为以下列:

    描述
    1
    >”开始检查的字节数表示对先前非“>”line 的依赖
    2数据的类型到 match
    byte单个字符
    short machine-order 16-bit integer
    long machine-order 32-bit integer
    string arbitrary-length string
    date long integer date(秒因为 Unix 的 epoch/1970)
    beshort big-endian 16-bit integer
    belong big-endian 32-bit integer
    bedate big-endian 32-bit integer date
    leshort little-endian 16-bit integer
    lelong little-endian 32-bit integer
    ledate little-endian 32-bit integer date
    3match 的数据内容
    4MIME 类型,如果匹配
    5匹配的 MIME 编码(可选)

    例如,以下魔术文件 lines 会识别某些音频格式:

    # Sun/NeXT audio data
    0      string      .snd
    > 12    belong      1       audio/basic
    > 12    belong      2       audio/basic
    > 12    belong      3       audio/basic
    > 12    belong      4       audio/basic
    > 12    belong      5       audio/basic
    > 12    belong      6       audio/basic
    > 12    belong      7       audio/basic
    > 12    belong     23       audio/x-adpcm
    

    或者这些将识别包含 Microsoft Word 或 FrameMaker 文档的*.doc files 之间的区别。(这些是使用相同文件的不兼容文件格式 suffix.)

    # Frame
    0  string  <MakerFile        application/x-frame
    0  string  <MIFFile          application/x-frame
    0  string  <MakerDictionary  application/x-frame
    0  string  <MakerScreenFon   application/x-frame
    0  string  <MML              application/x-frame
    0  string  <Book             application/x-frame
    0  string  <Maker            application/x-frame
    
    # MS-Word
    0  string  3760670043            application/msword
    0  string  320317021340241261  application/msword
    0  string  333245-000           application/msword
    

    可选的 MIME 编码可以作为第五列包含在内。例如,这可以识别 gzip 压缩 files 并为它们设置编码。

    # gzip (GNU zip, not to be confused with
    #       [Info-ZIP/PKWARE] zip archiver)
    
    0  string  037213  application/octet-stream  x-gzip
    

    性能问题

    该模块不适用于所有系统。如果您的系统几乎没有跟上其负载或者您正在执行 web 服务器基准测试,那么您可能不希望启用此功能,因为处理不是免费的。

    但是,我们努力改进原始file(1) code 的 performance,使其适合繁忙的 web 服务器。它是为服务器设计的,有数千名用户发布自己的文档。这在内联网上可能非常常见。很多时候,如果服务器能够对文件的内容做出更明智的决定,那么有用的话就是文件 name 允许...even,如果只是为了减少“为什么我的页面无法工作”calls 当用户不正确 name 自己的 files 时。您必须确定额外的工作是否适合您的环境。

    备注

    以下注释适用于mod_mime_magic模块,并包含在此处是为了符合要求其确认的贡献者的版权限制。

    mod_mime_magic:通过文件 magic numbers 查找 MIME 类型
    版权所有(c)1996-1997 Cisco Systems,Inc。

    该软件由 Cisco Systems 于 1997 年 7 月提交给 Apache Group。此 source code 的未来修订版和衍生版必须承认 Cisco Systems 是该模块的原始贡献者。所有其他许可和使用条件都是 Apache Group 的条件。

    一些此 code 源自最初发布到 comp.sources.unix 的文件命令的自由 version。该程序的版权信息包含在下面。

    • 版权所有(c)Ian F. Darwin,1987 年。由 Ian F. Darwin 撰写。

    本软件不受美国电话电报公司或加州大学董事会的任何许可。

    允许任何人在任何计算机系统上出于任何目的使用本软件,并对其进行更改并自由重新分发,但受以下限制:

    • 对于使用本软件的后果,无论多么可怕,即使它们都存在缺陷,作者也不承担任何责任。
    • 不得通过明确声明或遗漏来歪曲本软件的来源。由于很少有用户阅读过资源,因此必须在文档中显示学分。
    • 修改后的版本必须明确标记,不得歪曲为原始软件。由于很少有用户阅读过资源,因此必须在文档中显示学分。
    • 不得删除或更改此通知。

    为了遵守达尔文先生的条款:从免费的“文件”命令中对此进行了非常严格的修改。

    • all-in-one 文件,用于从 Apache 的一个 version 移动到下一个 version 时编译方便。
    • Memory 分配是通过 Apache API 的池结构完成的。
    • 所有函数都有必要的 Apache API 请求或服务器结构传递给它们,必要时调用其他 Apache API 例程。(i.e.,通常用于 logging,files 或 memory 分配本身或 function.)
    • struct magic 已经从 array 转换为 single-ended 链表,因为它只在 time 生成一个 record,它只是按顺序访问,而 Apache API 没有等效的realloc()
    • 已更改函数以从服务器 configuration 而不是 globals 获取其参数。(它现在应该是可重入的,但尚未在线程中测试 environment.)
    • 用于将结果打印到 stdout 的位置现在将它们保存在列表中,用于在 Apache 请求 record 中设置 MIME 类型。
    • Command-line 标志已被删除,因为它们永远不会在这里使用。

    MimeMagicFile 指令

    描述:使用指定的魔术文件根据文件内容启用 MIME-type 确定
    句法:MimeMagicFile file-path
    Context:server config,virtual host
    状态:延期
    模块:mod_mime_magic

    MimeMagicFile指令可用于启用此模块,默认文件在conf/magic处分发。 Non-rooted paths 是相对于ServerRoot的。除非使用更具体的设置,否则虚拟主机将使用与主服务器相同的文件,在这种情况下,更具体的设置将覆盖主服务器的文件。

    MimeMagicFile conf/magic
    

    上篇:mod_mime

    下篇:mod_negotiation