从服务结构

时间:2018-03-15 08:34:30

标签: server header asp.net-web-api2 owin service-fabric-stateless

我一直试图摆脱"服务器"标题返回" Microsoft-HTTPAPI / 2.0"在我自己托管的webapi2应用程序上,作为无云服务结构上的无状态服务托管。我尝试但没有奏效的事情:

我尝试实现IFilter以从webapi服务中删除标题但是 调试应用程序显示该标题在那时没有删除。

还尝试替换导致将新值附加到" Microsoft-HTTPAPI / 2.0"值。

我尝试在app.config文件中设置webserver标志(有点像将它用作web.config),但没有运气。

我试图覆盖OWIN管道的OnSerdingHeaders事件,但是" Server"标题不是要删除的,它显然会在稍后阶段添加。

我尝试了在网上找到的关于使用应用程序构建器在代码中清除服务器的所有建议。

我尝试实现一个自定义委托处理程序来清除/覆盖标题,但也没有运气。

我甚至试图在我的调试机器上篡改注册表,只是为了检查但是也没有成功。

My Pen-testers坚持要求摆脱它。还有另外一种方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

以下中间件解决了该问题:

public class RemoveServerHeaderMiddleware
{
    private readonly RequestDelegate next;

    public RemoveServerHeaderMiddleware(RequestDelegate next)
    {
        this.next = Argument.NotNull(next, nameof(next));
    }

    public async Task Invoke(HttpContext context)
    {
        context.Response.OnStarting(() =>
        {
            context.Response.Headers.Add("Server", string.Empty);

            return Task.CompletedTask;
        });

        await this.next(context).ConfigureAwait(false);
    }
}

当然,不要忘记注册中间件:

app.UseMiddleware<RemoveServerHeaderMiddleware>();

解决方案基于以下链接:

https://github.com/aspnet/HttpSysServer/issues/445

https://blogs.msdn.microsoft.com/timomta/2016/12/03/how-to-remove-the-server-header-from-weblistener/