IIS中OPTIONS显示TRACE已启用却返回501未实现,如何开启TRACE用于测试?
问题原因
IIS返回的OPTIONS响应里的允许动词列表是预先配置的静态值,和实际可处理的动词没有强关联。你遇到501 Not Implemented错误的核心原因是IIS默认没有配置TRACE动词对应的处理程序,即便请求筛选里允许TRACE请求,也没有组件可以处理该类请求。
你提供的请求截图参考:
- OPTIONS请求响应截图:

- TRACE请求501错误截图:

开启TRACE测试的操作步骤
方法1:通过IIS管理器图形化配置
- 打开IIS管理器,定位到目标默认站点,双击进入「处理程序映射」功能
- 点击右侧操作栏的「添加模块映射」,按要求填写配置:
- 请求路径:
* - 模块:选择
ProtocolSupportModule - 名称:可自定义,例如
TRACE专用处理程序
- 请求路径:
- 点击「请求限制」按钮,切换到「动词」标签页,选择「下列动词」,输入
TRACE后依次点击确定保存所有配置 - 回到站点功能主页,双击进入「请求筛选」功能,切换到「HTTP谓词」标签页,确认TRACE谓词状态为允许,若为禁用则右键选择「允许」
- 打开cmd执行
iisreset命令重启IIS服务,配置即可生效
方法2:直接修改站点web.config配置
无需操作IIS管理器,直接在站点根目录的web.config文件中添加如下配置段即可:
<configuration> <system.webServer> <handlers> <add name="TRACE-Handler" path="*" verb="TRACE" modules="ProtocolSupportModule" resourceType="Unspecified" requireAccess="None" /> </handlers> <security> <requestFiltering> <verbs> <add verb="TRACE" allowed="true" /> </verbs> </requestFiltering> </security> </system.webServer> </configuration>
配置保存后重启IIS即可生效。
注意:HTTP TRACE动词存在跨站追踪(XST)攻击风险,仅可在本地测试环境临时开启,测试完成后请立即关闭相关配置,生产环境禁止启用TRACE动词。
内容的提问来源于stack exchange,提问作者Сергей
相关产品推荐
相关产品推荐

