如何从Web API响应中删除标头? [重复]

问题描述 投票:9回答:4

这个问题在这里已有答案:

新的Web API 2.0项目,因此我们可以完全控制整个请求/响应管道。

我们如何从ASP.NET Web API响应发送的响应中删除“X-”标头?具体来说,目前并且总是会发生变化,我们要删除“X-AspNet-Version”,“X-Powered-By”和“X-SourceFiles”。

我们在从控制器返回result.Headers.Remove("X-AspNet-Version");之前尝试了HttpResponseMessage。这不起作用,因为标题仍然出现在Fiddler。我也没有在HttpResponseMessage对象的任何地方找到任何标题。对我来说,这表明我可能需要深入挖掘管道,但我不知道从哪里开始或者这是否正确。

c# asp.net-web-api asp.net-web-api2 .net-4.5
4个回答
4
投票

解决方案 - 1

来自this回答

“powered by”是IIS中的自定义标头。更改它取决于您使用的IIS版本。有关如何修改或删除的一些信息,请参阅here

要在Application Start事件中删除MVC标头,请在Global.asax中:

MvcHandler.DisableMvcResponseHeader = true;

把它放在web.config中去掉X-AspNet-Version标题:

<system.web>
    <httpRuntime enableVersionHeader="false" />
</system.web>

解决方案-2

您可以在Application_EndRequest()中更改任何标题或任何内容

protected void Application_EndRequest()
{
    // removing excessive headers. They don't need to see this.
    Response.Headers.Remove("header_name");
}

3
投票

我实现的替代解决方案是定义您自己的Http模块并删除OnPreSendRequestHeaders处理程序中的标头。这将从所有ASP.NET和Web API请求以及静态内容请求中删除标头。您可以在多个项目中重复使用它。

public class RemoveHttpHeadersModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        Guard.ArgumentNotNull(context, "context");

        context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    }

    public void Dispose() { }

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;

        if (application != null)
        {
            HttpResponse response = application.Response;
            response.Headers.Remove("Server");
            response.Headers.Remove("X-Powered-By");
        }
    }
}

2
投票

如果您使用的是Owin,则可以将其添加到启动类中以删除“服务器”标题。

        app.Use((context, next) =>
        {
            context.Response.Headers.Remove("Server");
            return next.Invoke();
        });
        app.UseStageMarker(PipelineStage.PostAcquireState);

1
投票

正如Slippery Pete所指出的那样,How to remove ASP.Net MVC Default HTTP Headers?已经回答了这个问题

另一个解决方案是修改EndRequest信号的请求,如http://tech.trailmax.info/2013/02/remove-server-http-header-from-asp-net-mvc-application/所示

© www.soinside.com 2019 - 2024. All rights reserved.