.NET Core
Чтобы удалить заголовок Server , в файле Program.cs добавьте следующую опцию:
.UseKestrel(opt => opt.AddServerHeader = false)
Для многоточечного ядра 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);
}
}
}
});
}
}
Pre .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 по всему миру ...