asp.net mvc隐藏IIS和mvc版本信息
1、创建空的asp.net mvc项目MVCRemoveHeader,并添加HomeController、Index页面




2、在VS中使用Chrome浏览器debug调试页面,在浏览器窗口按F12,进入开发者模式,依次点击【Netwrok】->【localhost】->【Headers】就可以看到如图所示的各种服务器信息
注意:如果打开F12模式后,network下面看不到localhost,则刷新页面即可看到了


3、隐藏MVC版本信息(节点:X-AspNetMvc-Version)
在Global.asax的Application_Start方法中添加如下代码,再次运行就没有 X-AspNetMvc-Version:
MvcHandler.DisableMvcResponseHeader = true;


4、隐藏asp.net 版本信息(节点:X-AspNet-Version)
在web.config文件的system.web节点下添加如下配置,再次运行就没有 X-AspNet-Version:
<httpRuntime enableVersionHeader="false" />
注意:默认是有httpRuntime节点的,因此只需要增加 enableVersionHeader="false"


5、隐藏X-Powered-By节点
在web.config文件中添加如下节点,如果已经存在,则修改对应节点,再次运行就没有 X-Powered-By:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>


6、隐藏IIS版本信息(节点:Server)
在Global.asax中添加如下代码,指定移除Server节点,再次运行就没有 Server:
/// <summary>
/// 隐藏 Response Header 中的Server节点(IIS版本信息)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application != null && application.Context != null)
{
application.Context.Response.Headers.Remove("Server");
}
}


7、做完上述几个节点隐藏前后的Response Header比对如下:

