ASP.NET Core 1.0'da her yanıt, Server: Kestrel
başlığını içerecektir. Bu başlığı, middleware kullanarak X-Power-By
gibi diğer başlık ile birlikte kaldırmak istiyorum.Ortabilgi kullanılarak sunucu üstbilgisi nasıl kaldırılır?
Kestrel üstbilgisini ana makine yapılandırmasında aşağıdakileri ayarlayarak kaldırabileceğimizi biliyorum ancak bunu middleware kullanarak yapmak istiyorum (aslında Httpmodule olduğumuzda bunu yapabiliriz, böylece aynı şeyi öğreniyorum). Denedim, işe yaramadı.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
çalıştı kodu:
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>();
}
}
boolean mülkiyet gerektiği İşte
kendisine iletmek herhangi başlıklarını kaldıracak örnek bir katman var iş. – davidfowlÇalışacağını biliyorum ama bu tür tüm başlıkları tek bir yerden kaldırmak istiyorum. – dotnetstep
new WebHostBuilder() KullanımKestrel (c => c.AddServerHeader = false) benim için çalıştı! –