当发出无效的 Post 请求时,IIS 会在响应标头中显示“Server: Microsoft-HTTPAPI/2.0”。例如,标头中不包含 content-length。返回的响应还显示 HTTP/1.1 411 Length required。
我发现最接近的案例是 iis.net 上的这个论坛帖子:http://forums.iis.net/t/1178183.aspx/1但仍然没有任何运气。
我也尝试过实现这一点:http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx并且它不会阻止添加/重命名服务器标头
我的客户要求删除所有“服务器”标头,以满足其安全要求。(不要问我为什么,我只是一个必须完成这件事的笨蛋)
有人遇到过这种情况吗?
答案1
偶然发现了 Paul Bouwer 的博客。
事实证明,当出现“Microsoft-HTTPAPI/2.0”服务器标头时,这意味着 HTTP.SYS 驱动程序已经处理了该请求,并且它从未到达 IIS 进行处理。这很有道理,既然您可以尽早处理无效请求,为什么要浪费时间发送到 IIS。
为了阻止 HTTP.SYS 添加服务器标头,需要在注册表中添加 REG_DWORD:HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
添加一个名为“DisableServerHeader”的 REG_DWORD,其值为 1。
我不热衷于尝试找到一种方法来重新启动驱动程序并处理依赖关系,所以我重新启动了机器。
重启后,用 Fiddler 测试,一切正常。