删除自托管WebApi响应中的服务器头

本文关键字:服务器 响应 WebApi 删除 | 更新日期: 2023-09-27 18:10:51

我们正在使用一个自托管的WebApi,我们需要删除发送的响应的服务器头(server: microsoft - httpi/2.0)

因为它是自托管的,HttpModule不是一个选项。实现DelegatingHandler,访问头以及添加是可能的。asp.net网站很好地详细说明了如何做到这一点。

但是服务器头似乎是在管道中添加的,因为它没有在我们从DelegatingHandler返回的HttpResponseMessage中设置。但是,我们可以添加值。

async protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
    response.Headers.Server.Add(new ProductInfoHeaderValue("TestProduct", "1.0"));
    response.Headers.Add("Server", "TestServerHeader");
    return response;
}

Server.Add.Add均能正常工作。response.Headers.Remove("Server");不工作,因为服务器头没有设置,response.Headers.Server是空的。

有什么我错过了吗?

删除自托管WebApi响应中的服务器头

没有代码解决方案可以在self主机上删除服务器HTTP头。唯一的解决方案是编辑windows注册表:https://learn.microsoft.com/ru-ru/archive/blogs/dsnotes/wswcf-remove-server-header

add

appBuilder.Use((context, next) =>
        {
            context.Response.Headers.Remove("Server");
            context.Response.Headers.Add("Server", new[] { "" });
            return next.Invoke();
        });

之前的Startup Configuration方法
config.EnsureInitialized();
相关文章: