移除ASP.NET Header的几种方式

Server:Microsoft-IIS/7.5  
X-AspNet-Version:4.0.30319  
X-AspNetMvc-Version:4.0  
X-Powered-By:ASP.NET  

如上ASP.NET自动添加的Header属性,以下总结几个移除Header的有效方式:

直接在Respone删除

HttpContext.Current.Response.Headers.Remove("Server");  
HttpContext.Current.Response.Headers.Remove("X-Powered-By");  
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");  
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");  

此种方式简单,但是需要在所有Action附加代码。

通过重写HttpModule

实现HttpModule:

public class MyHttpModule : IHttpModule  
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += OnPreSendRequestHeaders;
    }


    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Headers.Set("Server", "SKYF SERVER"); //重写Server
        HttpContext.Current.Response.Headers.Remove("X-Powered-By");
        HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
        HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
    }

    ...其他代码
}

最后记得在web.config 注册 httpModules节点。这样修改全局web服务便可生效。

其他方式

删除MVC Header:在Global.asax中的Application Start事件加入如下代码:

MvcHandler.DisableMvcResponseHeader = true;

删除 X-AspNet-Version、X-Powered-By,在web.config配置:

<system.web>  
  <httpRuntime enableVersionHeader="false" />
</system.web>  
<system.webServer>  
  <httpProtocol>
    <customHeaders>
      <clear />
      <remove name="X-Powered-By" />
    </customHeaders>
   </httpProtocol>
</system.webServer>  

以上。