删除自托管Web Api响应中的服务器标头

时间:2014-06-30 10:48:08

标签: c# .net asp.net-web-api http-headers self-hosting

我们正在使用自托管的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为空。

我有什么遗失的吗?

2 个答案:

答案 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();
        });