让IIS6支持任意扩展名和未知扩展名的下载
IIS6的安全性提高了很多,为了防止扩展名欺骗带来的安全性问题,限制了扩展名MIME类型。
IIS6 只为对具有已知文件扩展名的文件的请求提供服务。如果请求内容的文件扩展名未映射到已知的扩展,则服务器拒绝请求。即IIS不支持未知文件扩展下载!
症状
当您从 IIS 6.0 Web 服务器中请求文件时,而该文件的扩展名不是 Web 服务器上已定义的 MIME 类型,您将看到以下错误消息:
HTTP 错误 404 - 找不到文件或目录。
原因
IIS 早期版本包含通配符 MIME 映射,允许 IIS 处理任何文件而无需考虑扩展名。IIS 6.0 不包含该通配符 MIME 映射,不能处理在 IIS 元数据库中的 MimeMap 节点以外定义的任何类型的扩展名。
解决方案
Multipurpose Internet Mail Exchange (MIME) 类型说明了 Web 浏览器或邮件应用程序如何处理从服务器接收的文件。例如,当 Web 浏览器请求服务器上的某一项目时,也会请求此对象的 MIME 类型。某些 MIME 类型(例如图形)可以在浏览器内部显示。其他的 MIME 类型(例如文字处理文档)则需要使用外部帮助应用程序来显示。
当 IIS 传递邮件消息给邮件应用程序或传递网页给客户端 Web 浏览器时,IIS 也发送了所传递数据的 MIME 类型。如果存在以特定格式传递的附加或嵌入文件,那么 IIS 就会通知客户端应用程序嵌入或附加文件的 MIME 类型。然后客户端应用程序就知道了如何处理或显示正从 IIS 接收的数据。
IIS 只为具有已在 MIME 类型列表中注册的扩展名的文件提供服务,并且也允许配置其他的 MIME 类型和更改或删除 MIME 类型。
IIS 预配置为识别全局 MIME 类型的默认设置。您在 IIS 中创建的所有网站可以识别这些 MIME 类型。MIME 类型还可以独立于其他的或全局定义的类型,在网站和目录级别上定义。当在网站或目录级别上查看 MIME 类型时,只显示唯一对应于此级别的类型,并非从上一级别继承的所有类型。如果在较低级别修改 MIME 类型后,又在全局级别上应用相同的 MIME 类型,那么全局级别的 MIME 类型将覆盖在较低级别修改过的MIME 类型。
如果客户端请求引用了其扩展名未在 MIME 类型中定义的文件扩展名,那么 IIS 将返回一个 404.3 错误。通过添加通配符 (*) MIME 类型,也可以将 IIS 配置成向所有的文件提供服务,而忽略文件扩展名。
处理步骤
1. 打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击“属性”。
2. 单击“MIME 类型”。
3. 单击“新建”。
4. 在“扩展名”框中,键入星号 (*)。
5. 在“MIME 类型”框中,键入 application/octet-stream。
6. 应用新设置。请注意,您必须重新启动“万维网发布服务”或等待工作进程循环以使更改生效。
常见的MIME类型
超文本标记语言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar