In ASP.NET Core 1.0 ogni risposta includerà l'intestazione Server: Kestrel
. Voglio rimuovere questa intestazione insieme ad altra intestazione come X-Power-By
usando il middleware.Come rimuovere l'intestazione del server usando il middleware?
So che possiamo rimuovere l'intestazione di Kestrel nella configurazione host impostando quanto segue, ma voglio farlo usando il middleware (in realtà quando abbiamo Httpmodule possiamo fare così, quindi sto imparando la stessa cosa). Ho provato il mio po 'non ha funzionato.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
codice provato:
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>();
}
}
La proprietà booleana dovrebbe lavoro. – davidfowl
So che funzionerà, ma voglio rimuovere tutte le intestazioni di questo tipo da un singolo luogo. – dotnetstep
nuovo WebHostBuilder(). UseKestrel (c => c.AddServerHeader = false) ha funzionato per me! –