删除自托管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
是空的。
有什么我错过了吗?
没有代码解决方案可以在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();