通过以下更改,您可以在Azure中删除这些HTTP响应标头,而无需编写自定义HttpModule。
网上的大多数信息都已过时,涉及UrlScan(此后已集成到IIS7中,但已RemoveServerHeader=1
删除了该选项)。以下是我找到的最简洁的解决方案(这要归功于该Blog,该答案和这个Blog)。
要删除Server,请转到Global.asax,找到/创建Application_PreSendRequestHeaders
事件并添加以下内容(感谢BK,并且此博客在Cassini /本地开发人员上也不会失败):
2014年4月修改:您可以将PreSendRequestHeaders和PreSendRequestContext事件与本机IIS模块一起使用,但不要与实现IHttpModule的托管模块一起使用。设置这些属性可能会导致异步请求出现问题。正确的版本是使用BeginRequest事件。
protected void Application_BeginRequest(object sender, EventArgs e)
{
var application = sender as HttpApplication;
if (application != null && application.Context != null)
{
application.Context.Response.Headers.Remove("Server");
}
}
要删除X-AspNet-Version,请在web.config中查找/创建<system.web>
并添加:
<system.web>
<httpRuntime enableVersionHeader="false" />
...
要删除X-AspNetMvc-Version,请转到Global.asax,找到/创建Application_Start
事件并添加一行,如下所示:
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
要删除X-Powered-By,请在web.config中查找/创建<system.webServer>
并添加:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...