如何删除ASP.Net MVC默认HTTP标头?


175

我正在使用的MVC应用程序中的每个页面都会在响应中设置以下HTTP标头:

X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0

如何防止这些内容显示?


2
请查看本文“ 在IIS和ASP.NET中删除不必要的HTTP标头”,它描述了如何删除所有列出的标头。
帕维尔·莫什纽克

@PavelMorshenyuk对不起,您是否也找到删除服务器名称的方法?接受的答案不会删除服务器
neda Derakhshesh

Answers:


284

X-Powered-By是IIS中的自定义标头。从IIS 7开始,您可以通过将以下内容添加到来删除它web.config

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <remove name="X-Powered-By" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

也可以根据您的需要修改此头,有关更多信息,请参考http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders


添加此以web.config摆脱X-AspNet-Version标题:

<system.web>
  <httpRuntime enableVersionHeader="false" />
</system.web>

最后,要删除X-AspNetMvc-Version,编辑Global.asax.cs并在Application_Start事件中添加以下内容:

protected void Application_Start()
{
    MvcHandler.DisableMvcResponseHeader = true;
}

您还可以通过中的Application_PreSendRequestHeaders事件在运行时修改标头Global.asax.cs。如果您的标头值是动态的,这将很有用:

protected void Application_PreSendRequestHeaders(object source, EventArgs e)
{
      Response.Headers.Remove("foo");
      Response.Headers.Add("bar", "quux");
}

4
+1-为了利益,1)为什么呢?2)是否有不利影响?
BritishDeveloper 2010年

69
出于安全原因,您这样做是为了混淆您用于生成网页的技术。这迫使黑客加倍努力。
RedFilter 2010年

20
@BritishDeveloper这是来自安全审查的建议。我猜这是不宣传您的技术堆栈的最佳实践,因为这可以帮助黑客针对该平台的特定漏洞。
保罗·弗莱尔

1
@RedFilter感谢您的快速详细的回答!
Paul Fryer

6
在IIS 8上,这不会删除X-Powered-By标头。请参阅有关如何实现此目标的其他答案web.config
Knelis 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.