【发布时间】:2019-12-04 05:44:39
【问题描述】:
我需要从我的 ASP.NET MVC 3 Web 应用程序中删除以下标头。
Server
X-AspNet-Version
X-AspNetMvc-Version
X-AspNetWebPages-Version
X-Powered-By
我找到了两个可行的选项。选项 1 更干净,实际上删除了服务器标头,但我试图找出是否有任何我应该担心的副作用。 哪一个选项比另一个更好?每种方法的优缺点是什么?
选项 1
Global.asax.cs >> Application_Start()
PreSendRequestHeaders += Application_PreSendRequestHeaders;
Global.asax.cs
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Remove("X-AspNetWebPages-Version");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-Powered-By");
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
}
选项 2
Web.config >> 在<system.web> 节点内(删除 X-AspNet-Version)
<httpRuntime enableVersionHeader="false" />
Web.config >> 在<system.webServer> 节点内(移除 X-Powered-By)
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Web.config >> 在<system.webServer> 节点内(更改服务器的值,需要 URLRewrite)
<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
Global.asax.cs >> Application_Start()(删除 X-AspNetMvc-Version 和 X-AspNetWebPages-Version)
MvcHandler.DisableMvcResponseHeader = true;
WebPageHttpHandler.DisableWebPagesResponseHeader = true;
【问题讨论】:
-
如果 IIS 版本是 10,我找到了一种更好的方法来删除服务器标头。在 web.config 中,在
节点中添加一个 节点。在此节点中添加 。这将完全删除标题而不是重写值。请注意,VS17 会错误地在 removeServerHeader 上抛出警告。 -
还有一个注意事项。 RemoveServerHeader 在 Windows Server 2016 build 1607 上的 IIS 10 中对我不起作用。它在 Windows Server 2019 build 1809 中有效。
标签: asp.net asp.net-mvc asp.net-mvc-3 http-headers iis-10