.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”行?的主要内容,如果未能解决你的问题,请参考以下文章

如何把dll嵌入到exe文件中

apnetwork怎么添加服务器

git-gui

win_c的EXE添加和提取图标icon

UWP项目是否可以包含没有打包项目的桌面exe?

图书馆 - 添加书籍 - HTM、CSS、JavaScript