IIS6 服务未注册的 MIME 类型
Posted
技术标签:
【中文标题】IIS6 服务未注册的 MIME 类型【英文标题】:IIS6 serving unregistered MIME Types 【发布时间】:2010-09-26 05:36:51 【问题描述】:我有一个 IIS6 Web 服务器(在 Win2003 上)有一个奇怪的行为,我猜这是一些未记录的“功能”......
它无需在 IIS 元数据库上注册即可提供 SVG 文件(扩展名为 .svg)。它也没有 * mime 类型。
对于这个请求:
GET /basic/file1.svg HTTP/1.1
响应包含
HTTP/1.1 200 OK
Content-Length: 32817
Content-Type: image/svg+xml
那么...... IIS 从哪里得到这个image/svg+xml
mime 类型?
我发现它的唯一地方是注册表,HKEY_CLASSES_ROOT\MIME\Database
。
但根据我找到的所有 MS 信息,IIS 允许的 mime 类型的来源是它自己的元数据库。
有人知道这种行为吗?这可能会导致 IIS 管理员产生错误的安全感...
大家好!!
【问题讨论】:
【参考方案1】:IIS 合并来自 Metabase 和注册表 (HKCR\
要列出元数据库 mime 时间,您可以使用:
adsutil.vbs get /MimeMap/mimemap
不幸的是,它打印出的 mime 地图很糟糕:
D:\Apps\Scripts>adsutil.vbs get /MimeMap/mimemap
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
MimeMap : (MimeMapList) ".asx,video/x-ms-asf" ".xml,text/xml" ".tsv,text/tab
-separated-values" ".ra,audio/x-pn-realaudio" ".sv4crc,application/x-sv4crc" ".spc,application/x-pkc
s7-certificates" ".pmc,application/x-perfmon" ".lit,application/x-ms-reader" ".crd,application/x-msc
在 ADSUtil.VBS 中更改一行可以解决此问题(注意“vbCRLF &”):
第 1655 行:
MimeOutPutStr = MimeOutPutStr & """" & MimeEntry.Extension & "," & MimeEntry.MimeType & """ "
到
MimeOutPutStr = MimeOutPutStr & vbCRLF & """" & MimeEntry.Extension & "," & MimeEntry.MimeType & """ "
产生这样的输出:
D:\Apps\Scripts>adsutil.vbs enum /MimeMap
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
KeyType : (STRING) "IIsMimeMap"
MimeMap : (MimeMapList)
".asx,video/x-ms-asf"
".xml,text/xml"
".tsv,text/tab-separated-values"
".ra,audio/x-pn-realaudio"
".sv4crc,application/x-sv4crc"
".spc,application/x-pkcs7-certificates"
".pmc,application/x-perfmon"
".lit,application/x-ms-reader"
".crd,application/x-mscardfile"
【讨论】:
以上是关于IIS6 服务未注册的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章