Trong ASP.NET Core 1.0, mọi phản hồi sẽ bao gồm tiêu đề Server: Kestrel
. Tôi muốn xóa tiêu đề này cùng với tiêu đề khác như X-Power-By
bằng phần mềm trung gian.Làm cách nào để loại bỏ tiêu đề máy chủ bằng phần mềm trung gian?
Tôi biết rằng chúng tôi có thể loại bỏ tiêu đề Kestrel trong cấu hình máy chủ bằng cách thiết lập như sau nhưng tôi muốn làm điều đó bằng cách sử dụng phần mềm trung gian (thực sự khi chúng tôi có Httpmodule chúng tôi có thể làm như thế này để tôi học cùng một điều). Tôi đã thử bit của tôi nó không hoạt động.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
đang thử:
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>();
}
}
Thuộc tính nên boolean công việc. – davidfowl
Tôi biết nó sẽ làm việc nhưng tôi muốn loại bỏ tất cả các tiêu đề như vậy từ nơi duy nhất. – dotnetstep
WebHostBuilder mới() Sử dụngKestrel (c => c.AddServerHeader = false) làm việc cho tôi! –