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>();
}
}
ブール型プロパティは、必要があります作業。 – davidfowl
私はそれが動作することを知っているが、私は単一の場所からすべてのそのようなヘッダーを削除したい。 – dotnetstep
新しいWebHostBuilder()。UseKestrel(c => c.AddServerHeader = false)が私のために働いた! –