移除ASP.NET Header的几种方式

Posted by Leon on 2015-12-08
1
2
3
4
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删除

1
2
3
4
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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配置:

1
2
3
4
5
6
7
8
9
10
11
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>

以上。