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>();
}
}