.exe 和.htm 是不是需要添加“AddType”行?
Posted
技术标签:
【中文标题】.exe 和.htm 是不是需要添加“AddType”行?【英文标题】:Is it necessary to add "AddType" line for .exe and .htm?.exe 和.htm 是否需要添加“AddType”行? 【发布时间】:2021-12-25 06:54:58 【问题描述】:最近我查看了我的 .htaccess 文件,发现 .exe 和 .htm 文件类型没有 AddType 行,如下所示:
<IfModule mod_mime.c>
AddType application/octet-stream .exe
AddType text/html .htm
</IfModule>
但是,奇怪的是浏览器仍然可以下载 .exe 文件,而不是在浏览器中显示它。并显示 .htm 而不是下载它。为什么?这两种类型是否需要添加“AddType”?
【问题讨论】:
这是一个奇怪的问题......如果你看到事情按预期工作,那么你为什么要问是否有必要添加这些指令? @arkascha,感谢您的评论。我的问题是为什么即使我不添加“AddType”子句它也能按预期工作? 多种原因:1.这些mime类型很可能已经在实际http服务器的配置中列出,因此您不必在分布式配置文件中额外添加它们一遍又一遍。 2. 这样的 mime 类型只会导致额外的 headers 被附加到传递的有效负载中。如果客户端(浏览器)不需要帮助来自行识别 mime 类型,则不需要这些标头。 3. 大多数 http 服务器都非常擅长以动态方式动态确定文件的 mime 类型 4. 处理未知 mime 类型的后备行为是下载它。 通常可以说“文件扩展名”已成为过去。它们在 1980 年代很有用,但现代系统并不真正关心它们。通过查看文件的内容来动态确定文件的 MIME 类型更加容易和精确。与往常一样,有一个值得注意的例外:MS Windows 的某些部分仍然依赖于“文件扩展名”,尤其是文件管理器。使用其他操作系统的另一个原因。 【参考方案1】:这些 mime 类型肯定已经在服务器配置中定义了。虽然不一定明确地使用 AddType
指令。
但是,.exe
文件的 mime 类型更可能定义为 application/x-msdownload
(或者可能是 application/vnd.microsoft.portable-executable
),而不是 application/octet-stream
。请参阅这个相关的 *** 问题:Which MIME type is correct for the .exe file?
这些 mime 类型列在 mime.types
配置文件(其位置由 mod_mime 的 TypesConfig
directive 定义)中,由 Apache/mod_mime 在启动时读取。 mime.types
包含 mime 类型到文件扩展名的映射列表。例如:
application/x-msdownload exe dll com bat msi text/html html htm
完整列表:https://github.com/apache/httpd/blob/trunk/docs/conf/mime.types
有关在 iana.org 注册的 mime 类型的官方列表,请参阅:https://www.iana.org/assignments/media-types/media-types.xhtml
浏览器仍然可以下载.exe文件而不是在浏览器中显示。
浏览器通常不知道如何处理“.exe
文件”。如果浏览器收到一个它不理解的 mime 类型(Content-Type
标头)的响应,它很可能会提示下载/保存它。
【讨论】:
/etc/mime.types
在我的 Ubuntu 服务器上具有 application/x-msdos-program com exe bat dll
,因此提供的 mime 类型可能取决于您的系统以及您的 Web 服务器。
@StephenOstermiller 很好奇,我想知道为什么 Ubuntu 使用application/x-msdos-program
? “正确/官方”的 mime 类型是 application/vnd.microsoft.portable-executable
,尽管 application/x-msdownload
(这似乎是历史/事实上的标准)仍然由 Apache AFAICT 分发。
非常感谢。我还在我的 Linux(CentOS 6.8) 中找到 /etc/mime.types,其中包含 exe 和 htm。以上是关于.exe 和.htm 是不是需要添加“AddType”行?的主要内容,如果未能解决你的问题,请参考以下文章