我们正在使用自托管的WebApi,我们需要删除发送的响应的服务器标头(服务器:Microsoft-HTTPAPI / 2.0)。
由于它是自托管的,因此不能选择HttpModule。实现DelegatingHandler
,可以访问标题以及添加。 asp.net website很好地详述了如何做到这一点。
但是服务器标头似乎在管道中稍后添加,因为它没有在我们从HttpResponseMessage
返回的DelegatingHandler
中设置。但是,我们可以添加值。
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
为空。
我有什么遗失的吗?
答案 0 :(得分:2)
没有代码解决方案可以删除自身主机上的Server HTTP标头。 唯一的解决方案是编辑Windows注册表: https://docs.microsoft.com/ru-ru/archive/blogs/dsnotes/wswcf-remove-server-header
答案 1 :(得分:1)
添加
'12/13/2018'
之前的启动配置方法
appBuilder.Use((context, next) =>
{
context.Response.Headers.Remove("Server");
context.Response.Headers.Add("Server", new[] { "" });
return next.Invoke();
});