<-
Apache HTTP 服务器 2.4 > Apache模块mod_mime_magic

Apache模块mod_mime_magic

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

摘要

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

该模块来自file(1)Unix命令的免费版本,该 命令使用“幻数”和文件内容中的其他提示来确定内容是什么。仅当MimeMagicFile指令指定了magic文件时,此模块才处于活动状态。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

魔术文件的格式

文件的内容是4-5列中的纯ASCII文本。允许使用空行,但可以忽略。带注释的行使用井号(#)。其余各行针对以下各列进行了解析:

描述
1个
>” 开始检查的字节数表示对先前非“ >”行的依赖
2

要匹配的数据类型

byte 单字符
short 机器顺序的16位整数
long 机器顺序的32位整数
string 任意长度的字符串
date 长整数日期(自Unix时代/ 1970年以来的秒数)
beshort 大尾数16位整数
belong 大尾数32位整数
bedate 大端32位整数日期
leshort 小尾数16位整数
lelong 小尾数32位整数
ledate 小尾数32位整数日期
3 要匹配的数据内容
4 MIME类型(如果匹配)
5 MIME编码(如果匹配)(可选)

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

# 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

否则这些将识别出*.doc 包含Microsoft Word或FrameMaker文档的文件之间的区别。(这些是不兼容的文件格式,它们使用相同的文件后缀。)

# 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  \376\067\0\043            application/msword
0  string  \320\317\021\340\241\261  application/msword
0  string  \333\245-\0\0\0           application/msword

第五列可以包含可选的MIME编码。例如,这可以识别压缩的文件并为其设置编码。

# gzip (GNU zip, not to be confused with
#       [Info-ZIP/PKWARE] zip archiver)

0  string  \037\213  application/octet-stream  x-gzip
最佳

性能问题

此模块不适用于每个系统。如果您的系统几乎无法满足其负载要求,或者您正在执行Web服务器基准测试,则可能不希望启用此功能,因为处理不是免费的。

但是,已努力提高原始file(1)代码的性能,以使其适合繁忙的Web服务器。它是为服务器设计的,那里有成千上万的用户发布自己的文档。这在Intranet上可能很常见。很多时候,如果服务器可以对文件内容做出比文件名所允许的更多的智能决策,这将很有帮助……即使只是为了减少当用户不正确地命名自己的文件时“为什么我的页面无法工作”的调用。您必须确定额外的工作是否适合您的环境。

最佳

笔记

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

mod_mime_magic:通过文件魔术数字查找MIME类型
版权所有(c)1996-1997 Cisco Systems,Inc.

该软件由Cisco Systems在1997年7月提交给Apache Group。此源代码的未来修订版和派生物必须承认Cisco Systems是该模块的原始贡献者。所有其他许可和使用条件均为Apache Group的许可和使用条件。

此代码中的某些代码源自最初发布到comp.sources.unix的file命令的免费版本。该程序的版权信息如下。

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

该软件不受美国电话电报公司或加利福尼亚大学董事会的任何许可。

任何人均有权在任何计算机系统上出于任何目的使用本软件,并对其进行更改和自由重新分发,但要遵守以下限制:

  1. 作者对此软件的后果不承担任何责任,即使这些后果是由于软件中的缺陷引起的,也不管它们多么可怕。
  2. 不得以明显的主张或以遗漏的方式歪曲本软件的来源。由于很少有用户阅读过源代码,因此必须在文档中显示功劳。
  3. 更改后的版本必须明确标明,并且不得将其误认为是原始软件。由于很少有用户阅读过源代码,因此必须在文档中显示功劳。
  4. 本声明不可删除或更改。

为了符合达尔文先生的条款:此命令已从免费的“文件”命令中进行了非常显着的修改。

  • 从一个版本的Apache迁移到下一个版本时的全合一文件,以方便编译。
  • 内存分配是通过Apache API的池结构完成的。
  • 所有功能都有必要的Apache API请求或服务器结构传递给它们,以调用其他Apache API例程。(,通常用于日志记录,文件或本身或调用函数的内存分配。)
  • struct magic已从数组转换为单端链表,因为它一次仅增长一条记录,只能按顺序访问,并且Apache API没有等效项 realloc()
  • 功能已更改,可以从服务器配置而不是全局参数中获取其参数。(它现在应该可重入,但尚未在线程环境中进行测试。)
  • 现在将其用于将结果打印到stdout的位置将它们保存在一个列表中,这些列表用于在Apache请求记录中设置MIME类型。
  • 命令行标志已被删除,因为它们在此不再使用。
最佳

MimeMagicFile 指令

描述:使用指定的魔术文件根据文件内容启用MIME类型确定
句法:MimeMagicFile file-path
内容:server config, virtual host
Status:Extension
Module:mod_mime_magic

The MimeMagicFile directive can be used to enable this module, the default file is distributed at conf/magic. Non-rooted paths are relative to the ServerRoot. Virtual hosts will use the same file as the main server unless a more specific setting is used, in which case the more specific setting overrides the main server's file.

Example

MimeMagicFile conf/magic

Available Languages:  en  |  fr 

最佳

Comments

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。