如何移除IIS 10 403 Forbidden错误页面中的Server响应头
IIS 10 移除403错误页Server响应头解决方案
常规配置失效的核心原因是:带特殊字符的不存在路径触发的403响应由IIS核心层/http.sys提前返回,不会经过ASP.NET管道、URL重写模块、常规web.config响应头规则的处理,因此上层配置无法对这类响应生效。
以下为按优先级排序的可行解决方案:
方案1:使用IIS原生配置屏蔽Server头(最简便,仅IIS 10+支持)
- 打开IIS管理器,定位到对应站点的根节点,双击「配置编辑器」
- Section下拉选择
system.webServer/security/requestFiltering - 找到
removeServerHeader属性,设置为True - 点击右上角「应用」,执行
iisreset命令重启IIS后生效
该配置会直接在IIS核心层屏蔽所有响应的Server头,覆盖错误页、静态资源、动态页面等所有返回场景
方案2:修改http.sys注册表配置(全局生效,优先级最高)
如果方案1未生效,可修改http.sys的全局规则:
- 按下Win+R输入
regedit打开注册表编辑器 - 定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters - 新建DWORD(32位)值,名称为
DisableServerHeader,数值数据设置为1,基数选择十进制 - 重启服务器或者执行
net stop http && net start http命令生效(注意重启http服务会中断所有IIS站点服务)
该配置会直接让http.sys在返回所有响应时都不添加Server头,对服务器上所有IIS站点生效
辅助兜底配置
要覆盖所有场景的信息泄露风险,可额外添加以下配置:
- 在web.config的
system.web节点下添加<httpRuntime enableVersionHeader="false" />移除X-AspNet-Version头 - 在web.config的
system.webServer/httpProtocol/customHeaders节点添加<remove name="X-Powered-By" />,同时在IIS全局「HTTP响应头」功能中删除X-Powered-By的默认配置 - 在ASP.NET MVC应用的Global.asax中添加事件代码兜底移除响应头:
protected void Application_PreSendRequestHeaders(object sender, EventArgs e) { if (HttpContext.Current != null) { HttpContext.Current.Response.Headers.Remove("Server"); HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version"); } }
内容的提问来源于stack exchange,提问作者Zakhar Kurasov
相关产品推荐
相关产品推荐

