In ASP.NET Core 1.0 enthält jede Antwort die Kopfzeile Server: Kestrel
. Ich möchte diesen Header zusammen mit anderen Header wie X-Power-By
mit Middleware entfernen.Wie Server Header mit Middleware entfernen?
Ich weiß, dass wir Kestrel-Header in Host-Konfiguration entfernen können, indem Sie Folgendes setzen, aber ich möchte es mit Middleware tun (tatsächlich, wenn wir Httpmodule haben können wir so tun, damit ich das gleiche lernen). Ich habe es versucht, aber es hat nicht funktioniert.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
Versuchte Code:
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>();
}
}
Die boolean Eigenschaft sollte Arbeit. – davidfowl
Ich weiß, es wird funktionieren, aber ich möchte alle solche Header von einem einzigen Ort entfernen. – dotnetstep
neuer WebHostBuilder(). UseKestrel (c => c.AddServerHeader = false) hat für mich funktioniert! –