我有一个IIS6 Web服务器(在Win2003上)有一个奇怪的行为,我猜是一些无证的“功能”......
它提供SVG文件(扩展名.svg),而不在IIS元数据库中注册。它也没有* 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管理员产生错误的安全感......
最好的问候每个人!!
答案 0 :(得分:1)
IIS合并来自Metabase和注册表(HKCR \< extension>)的MIME映射,以获取允许的Mime类型列表。
要列出配置数据库默认时间,您可以使用:
adsutil.vbs get /MimeMap/mimemap
不幸的是,很难打印出哑剧地图:
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"