以下更改允许您在 Azure 中删除这些 HTTP 响应标头,而无需编写自定义 HttpModule。
网上的大部分信息都已过时,并且涉及 UrlScan(它已被集成到 IIS7 中,但已RemoveServerHeader=1
删除该选项)。下面是我找到的最简洁的解决方案(感谢这个博客、这个答案和这个博客的结合)。
要删除Server,请转到 Global.asax,找到/创建Application_PreSendRequestHeaders
事件并添加以下内容(感谢BK和此博客,这在 Cassini / local dev 上也不会失败):
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>
...