无法在 .NET Core Web 应用程序中修改 HTTP 响应标头集合

问题描述 投票:0回答:1

我有这个控制器:

[PushHeaderAttribute]
 public class ClockController : Controller
 {

 }

其中PushHeaderAttribute定义如下:

public class PushHeaderAttribute : ResultFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext context)
    {
        context.HttpContext.Response.Headers.Remove("Server");
        context.HttpContext.Response.Headers.Add("content-encoding", System.Text.Encoding.UTF8.WebName);
        context.HttpContext.Response.Headers.Add("connection", "keep-alive ");
        base.OnResultExecuting(context);
    }
}

调用了该属性,但是在调试时,

context.HttpContext.Response.Headers
列表为空,但是,在监视响应时,所有标头都在那里。

如何正确操作 .NET Core Web 应用程序中的标头?

asp.net-core-mvc http-headers
1个回答
0
投票

Server
这样的基本标头无法删除,因为它还没有添加到您的场景中,它将添加到Kestrel/IIS的内部管道中

如果您确实想删除“Server”响应头,您可以对 Kestrel(.Net 6 +) 进行如下配置:

builder.WebHost.ConfigureKestrel(op => 
{
    op.AddServerHeader = false;
});

对于IIS,你可以参考这篇文章

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