В ASP.NET Core 1.0 каждый ответ будет включать заголовок Server: Kestrel
. Я хочу удалить этот заголовок вместе с другим заголовком, таким как X-Power-By
используя промежуточное ПО.
Я знаю, что мы можем удалить заголовок Kestrel в конфигурации хоста, установив следующее, но я хочу сделать это с использованием промежуточного программного обеспечения (на самом деле, когда у нас есть Httpmodule, мы можем сделать это так, поэтому я учусь тому же). Я попробовал свой бит, это не сработало.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
Пробный код:
public class HeaderRemoverMiddleware
{
private readonly RequestDelegate _next;
public HeaderRemoverMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
httpContext.Response.OnStarting(callback: removeHeaders, state: httpContext);
await _next.Invoke(httpContext);
}
private Task removeHeaders(object context)
{
var httpContext = (HttpContext)context;
if (httpContext.Response.Headers.ContainsKey("Server"))
{
httpContext.Response.Headers.Remove("Server");
}
return Task.FromResult(0);
}
}
public static class HeaderRemoverExtensions
{
public static IApplicationBuilder UseServerHeaderRemover(this IApplicationBuilder builder)
{
return builder.UseMiddleware<HeaderRemoverMiddleware>();
}
}