在IIS中已阻止HEAD、TRACE方法,但仍显示于允许方法列表
解决IIS请求筛选中已阻止的HEAD/TRACE方法仍显示在允许列表的问题
问题原因
你当前只是给HEAD、TRACE添加了拒绝规则,这仅会让IIS拦截这两种方法的请求(所以功能层面生效),但允许方法列表是继承自服务器级或父级配置的,站点级的拒绝规则不会自动从继承的允许列表中移除这两个方法,因此它们依然会显示在列表里。
解决方案
有两种方式可以彻底从允许列表中移除这两个方法:
通过IIS图形界面配置
- 打开站点的「请求筛选」功能,切换到「HTTP方法」选项卡
- 点击右侧的「允许的方法」,在弹出窗口中取消勾选「继承自父级或站点默认设置」
- 手动添加需要允许的HTTP方法(比如GET、POST等),不要包含HEAD和TRACE,保存配置即可
直接修改web.config配置
在web.config的<system.webServer>节点下添加明确的允许方法集合,设置allowUnlisted="false"(不允许未列出的方法),这样未列出的HEAD、TRACE既不会出现在允许列表里,也会被IIS拦截请求:<system.webServer> <security> <requestFiltering> <verbs allowUnlisted="false"> <add verb="GET" allowed="true" /> <add verb="POST" allowed="true" /> <!-- 按需添加其他需要允许的方法 --> </verbs> </requestFiltering> </security> </system.webServer>
完成配置后,允许方法列表里就只会显示你指定的方法,HEAD和TRACE的请求拦截功能也会保持正常。
内容的提问来源于stack exchange,提问作者DongHyeon
相关产品推荐
相关产品推荐

