.NET 核心
要删除 Server 标头,请在 Program.cs 文件中添加以下选项:
.UseKestrel(opt => opt.AddServerHeader = false)
对于 dot net core 1,在 .UseKestrel() 调用中添加选项。对于 dot net core 2,在 UseStartup() 之后添加该行。
要删除 X-Powered-By 标头,如果部署到 IIS,请编辑您的 web.config 并在 system.webServer 标记内添加以下部分:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
.NET 4.5.2
要删除 Server 标头,请在 global.asax 文件中添加以下内容:
protected void Application_BeginRequest(object sender, EventArgs e)
{
string[] headers = { "Server", "X-AspNet-Version" };
if (!Response.HeadersWritten)
{
Response.AddOnSendingHeaders((c) =>
{
if (c != null && c.Response != null && c.Response.Headers != null)
{
foreach (string header in headers)
{
if (c.Response.Headers[header] != null)
{
c.Response.Headers.Remove(header);
}
}
}
});
}
}
.NET 4.5.2 之前
将以下 c# 类添加到您的项目中:
public class RemoveServerHeaderModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
public void Dispose() { }
void OnPreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Server");
}
}
然后在您的 web.config 中添加以下 部分:
<system.webServer>
....
<modules>
<add name="RemoveServerHeaderModule" type="MyNamespace.RemoveServerHeaderModule" />
</modules>
但是我遇到了一个问题,即子项目找不到这个模块。不好玩。
删除 X-AspNetMvc-Version 标头
要删除“X-AspNetMvc-Version”标签,对于任何版本的 .NET,修改“web.config”文件以包含:
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
感谢 Microsoft 让这变得难以置信的困难。或者也许这是您的意图,以便您可以跟踪世界各地的 IIS 和 MVC 安装...